2017-07-05 7 views
0

http.responseTextに問題があります(常に空です)。私は私のコードを投稿します:http.responseText empty

function bCheckName() 
{ 
// It checks if the browser can allow a http request 
if (window.XMLHttpRequest) 
{ 
    xhttp = new XMLHttpRequest(); 
} 
else 
{ 
    // for IE6, IE5 
    xhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

// It takes the name from the form 
var firstName = document.getElementById("firstName").value; 
var datastring = "firstName=" + firstName; 
var datastring_escaped = encodeURIComponent (datastring); 

// It opens the request to thye server 
xhttp.open ("POST", "../form/formValidation.php", true); 

// It sets the header 
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

// It sends the data to the server 
xhttp.send(datastring_escaped); 

// It takes the responde from the server 
xhttp.onreadystatechange = function() 
{ 
    if (xhttp.readyState == 4 && xhttp.status == 200) 
    { 

     var string  = xhttp.responseText.substr (0, 2); 
     var response = xhttp.responseText.substr (5); 

     if (string == "OK") 
     { 
      document.getElementById("nameResponse").innerHTML   = '<img src = "../img/pages/contact/true.png" alt = "correct answer" >'; 
      document.getElementById("response").innerHTML    = response; 
     } 
     else 
     { 
      document.getElementById("nameResponse").innerHTML   = '<img src = "../img/pages/contact/error.png" alt = "wrong answer">'; 
      document.getElementById("response").innerHTML    = response; 
     } 
    } 
} 

return false;} 

"xhttp.send(datastring_escaped); "xhttp.send(datastring);"で、すべてが期待どおりに動作します。どうすれば問題を解決できますか?私はまた、PHPコードを投稿します:

 if (isset($_POST['firstName'])) 
     { 

     echo("OK - ".urldecode ($_POST['firstName'])); 

     } 

どうすれば問題を解決できますか? 事前に感謝!

のFrancesco

+0

私はあなたが私は 'と考え、これらの日;-) – fire

+0

onreadystatechange' IE 5または6をサポートする必要はないと思う:あなたは本当にそれをエンコードする必要がある場合は

、その後のみfirstName変数をエンコード関数は 'send'の前に設定する必要がありましたが、' datastring'で動作すると言うなら、そうであってはいけません。とにかく、それが 'datastring'で動作するなら、なぜトラブルを経験するのですか? – Kaddath

答えて

1

encodeURIComponentのみURIの部分(コンポーネント)のために使用されます。

encodeURIComponent("firstName=foobar") 

はとなります。 firstNameリクエストパラメータはなく、$_POST['firstName']から読み取ることはできません。

var datastring_escaped = "firstName=" + encodeURIComponent(firstName); 
+0

はい、私は眠っていたと思います。あなたの答えをありがとう。 – Francesco