2009-12-21 2 views
1

J'essaie de transmettre une chaîne via la méthode XmlHttp. Permettez-moi de vous montrer le code:xmlHttp chaîne POST En-têtes problème

HTML

<div id="greetings"> 
        You are voting out <b style="color: #00b0de;" id=roadiename></b>. Care to explain why?<br/><br/> 
        <textarea name="textarea" id="comment" cols="38" rows="7"></textarea><br> 
        <a href="#" id="postmsg" onclick='getMsg("#comment.val()")' ><img src="images/submit.gif" style="border: none; float:right; padding-top: 10px;padding-right: 10px;"/></a> 
       </div> 

javscript

function getMsg(msg) 
{ 
    msgBox = msg; 
} 

Core.addEventListener(submit, "click", function(){Slide.send();}); 

fonction d'envoi

send: function() 
    { 
     xmlHttp=GetXmlHttpObject(); 
     if (xmlHttp==null) 
     { 
      alert ("Browser does not support HTTP Request"); 
      return; 
     } 

     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); 

     function stateChanged() 
     { 
      if (xmlhttp.readyState==4) 
      { 
      document.getElementById("greetings").innerHTML=xmlhttp.responseText; 
      } 
     } 

     function GetXmlHttpObject() 
     { 
     var objXMLHttp=null; 
     if (window.XMLHttpRequest) 
      { 
      objXMLHttp=new XMLHttpRequest(); 
      } 
     else if (window.ActiveXObject) 
      { 
      objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
     return objXMLHttp; 
     } 
    }, 

après tout est dit et fait, c'est le Firebug d'erreur montre:

uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost/roadies/JS/script.js :: anonymous :: line 96" data: no] 

Line 0 
+0

Alors vous êtes passé de jQuery à essayer de le faire manuellement? – prodigitalson

+0

ouais. jquery me tue. ;-) J'ai posté une mise à jour comme vous me l'avez demandé. pouvez-vous jeter un coup d'oeil? – amit

+0

ouais ill jeter un coup d'oeil mais le problème là n'a pas envoyé la demande ni obtenir les valeurs de la demande - c'était un problème avec votre SQL. – prodigitalson

Répondre

1

EDIT:

Vous devez appeler open; avant de pouvoir utiliser le setRequestHeaders.


Ce qui est effectivement en ligne 96 de http://localhost/roadies/JS/script.js?

+0

xmlHttp.setRequestHeader ("Content-type", "application/x-www-format-urlencoded; charset = UTF-8"); – amit

+0

c'est la ligne 96. – amit

+0

l'exception a disparu. pas de données encore, cependant. Je pense que j'ai besoin d'un nouveau fichier user_submit.php? ou le SQL? Je deviens fou. – amit

0

Depuis les W3C spec et Wikipedia, les en-têtes HTTP sont en fait "Content-Type" et "Content-Length" (notez le deuxième mot majuscule). Est-ce que changer le cas fait une différence?

+0

l'a fait. n'aide pas. – amit

+0

Case n'a pas d'importance. De la section 4.2 de la spécification HTTP 1.1 1.1 - «Les noms de champs ne sont pas sensibles à la casse» - http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html – Asaph

+0

@Asaph: Merci de nous avoir éclaircis – Brian