2010-11-30 5 views
0

J'ai beaucoup essayé mais je n'ai pas été en mesure de trouver ce qui ne va pas avec cette fonction pour enregistrer deux valeurs dans la base de données. Cela a fonctionné correctement pour qu'une autre fonction enregistre une valeur. Il se comporte très étrange ici. Parfois, envoyez la valeur 'parent' & parfois cesser de l'envoyer mais n'envoyez jamais de valeur de msg. Voici la fonction. Cela fonctionne bien pour une entrée, c'est-à-dire un parent, mais les problèmes commencent avec l'ajout de la deuxième entrée.erreur dans la fonction json enregistrement des données dans la base de données

<script> 
function ADDLISITEM(form) 
{ 
var parent = form.txtInput.value; 
    var msg = form.msgInput.value; 
    form.txtInput.value = ""; 
    form.msgInput.value = ""; 
    var url = "send_mysql.php" 
var request = null; 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
request=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
request=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
request.open("POST", url, true); 
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
request.setRequestHeader("Connection", "close"); 
request.onreadystatechange = function(){ 
    if (request.readyState == 4) { 
     if (request.status == 200) { 
      //alert('POST'); 
    } else { 
     alert(request.status); // fails here 
    } 
    } 
} 
request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"&msg=" + 
    encodeURIComponent(msg).replace(/%20/g, '+')); 
} 
</script> 

C'est send.php

$ username = "babar";
$ password = "k4541616";
$ hostname = "localhost";
$ dbh = mysql_connect ($ nom d'hôte, $ nom d'utilisateur, $ mot de passe) ou die ("Impossible de se connecter
à MySQL"); $ Selected = mysql_select_db ("spec", $ dbh) ou die ("Impossible de sélectionner first_test"); ?

//die(var_export($_POST,TRUE)); 

    $parent = $_POST['parent']; 
    $msg = $_POST['msg']; 
    $name = 'Akhtar Nutt'; 
    //$parent2 = json_decode($parent); 
    $msg_ID = '2q7b2sfwwe'; 
    //$msg2 = json_decode($msg); 
    $query = "INSERT INTO msg2_Qualities(id,name,msg,msg_id,parent) VALUES 
    ('','$name','$msg','$msg_ID','$parent')"; 
    if(!mysql_query($query, $dbh)) 
     {die('error:' .mysql_error()) 
     ;} 

>

Répondre

2

Alter

request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"msg=" + encodeURIComponent(msg).replace(/%20/g, '+')); 

à:

request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"&msg=" + encodeURIComponent(msg).replace(/%20/g, '+')); 

Vous êtes absent le séparateur argument & dans votre chaîne de requête ...

Yo Vous pouvez aussi vous abstenir d'utiliser des valeurs dans $_REQUEST car elles ne sont pas fiables. Si votre script attend des données d'un POST, récupérez ces valeurs à $_POST.

+0

J'ai essayé les deux mais ça ne fait aucune différence, Oui, ça manquait je l'ajoute mais ça ne fait pas non plus de différence. – XCeptable

+0

OK. Puis laissez send.php faire un "die (var_export ($ _ POST, TRUE))" dès le début. Quel est le résultat lors de l'envoi de données via XHR alors? –

+0

@ goreSplatter, pouvez-vous expliquer un peu. Je mets die (var_export ($ _ POST, TRUE)); juste au début de send_mysql.php i.e après la connexion à la base de données. Que voulez-vous dire par «envoyer des données via XHR»? – XCeptable