2009-12-21 4 views
0

la fonction actuelle XMLHTTP j'utilise passe un très petit int dans le fichier php pour le traitement en utilisant la méthode GET.chaîne xmlHttp passant

xmlhttp=GetXmlHttpObject(); 
     if (xmlhttp==null) 
     { 
      alert ("Browser does not support HTTP Request"); 
      return; 
     } 
     var url="user_submit.php"; 
     url=url+"?vote="+value; 
     url=url+"&sid="+Math.random(); 
     xmlhttp.onreadystatechange=stateChanged; 
     xmlhttp.open("GET",url,true); 
     xmlhttp.send(null); 
     function stateChanged() 
     { 
      if (xmlhttp.readyState==4) 
      { 
      document.getElementById("captionbox").innerHTML=xmlhttp.responseText; 
      } 
     } 

maintenant je veux traiter une boîte comment dans cette demande ajax, que je suppose que nécessiterait un appel POST? Est-ce que quelqu'un peut m'aider avec ça?

i besoin d'envoyer le contenu de la boîte de commentaires à travers cette demande ajax dans le fichier php pour le traitement, puis en ajoutant dans le DB.

Répondre

1

Vous utilisez send() pour envoyer des données POST de cette façon. Vous devez ensuite envoyer les en-têtes appropriés et encoder correctement ces données, etc.

Cela étant dit, il est incroyablement fastidieux d'utiliser XmlHttpRequest. Il y a des problèmes entre les navigateurs à prendre en compte (par exemple, pour quand XmlHttpRequest solutions de repli n'existe pas) et que vous pouvez voir le code lui-même est en désordre.

Tenir compte en utilisant une bibliothèque Javascript comme jQuery au lieu et il réduit votre code:

$("#captionbox").load('user_submit.php', { 
    vote: value, 
    sid: 12345 
}); 

qui sera également l'encodage des paramètres de chaîne de requête (et beaucoup d'autres choses) à juste titre de la boîte.

Pour poster un commentaire, imaginez que vous avez:

<textarea id="comment"></textarea> 
<input type="button" id="send" value="Send"> 

alors:

$.post("post_comment.php", { 
    comment: $("#comment").text() 
}); 

Et jQuery est seulement 19K minifiés et gzip.

+0

Je suis également d'accord avec Cletus, utilisez une bibliothèque si vous ne vous sentez pas comme trimer votre bon vieux fonctions AJAX (comme je viens de le faire pour vous) –

+0

qui était super. pouvez-vous me dire comment puis-je recevoir des données que je viens d'envoyer en php? – amit

+0

Le premier exemple montre la réception HTML de PHP et de le mettre dans une boîte de commentaire. Tous les appels jquery Ajax prennent un rappel de fonction où vous pouvez transmettre des données HTML, XML ou JSON à partir du serveur. – cletus

2
... 
var url="user_submit.php", 
    data="vote="+value+"&sid="+Math.random(); 
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8"); 
xmlHttp.setRequestHeader("Content-length", data.length); 
xmlhttp.open("POST",url,true); 
... 
xmlHttp.send(data); 
... 
+0

le code ci-dessus lorsqu'il est ajouté déclenche cette erreur dans Firebug. exception non interceptée: [Exception ... "Le composant a renvoyé le code d'erreur: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" emplacement: "Cadre JS :: http: // localhost/roadies/JS/script .js :: anonymous :: line 91 "data: no] – amit

+0

vous devez faire plus que copier le coller, vous devez changer le' ... 'à ce que votre code est –