2013-04-17 53 views
0

使用Ajax與服務器進行數據通信,

我想傳遞一個值使用AJAX dat.php並從dat.php回另一個值。下面的代碼工作正常,當我使用GET,但不適用於POST工作。我需要使用POST,因爲這是我想傳遞的敏感信息。任何想法都會發生。

這是我對test.php的

<html> 
<body> 

<form action="<?php echo $_SERVER['$PHP_SELF'];?>" method="post"> 

<input type="text" name="value" onchange="ch_email1(this.value)"></input> 

</form> 



<script> 
function ch_email1(str){ 
    var ajaxRequest;  
    try{ 
     ajaxRequest = new XMLHttpRequest(); 
    } catch (e){ 
     try{ 
     ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
     try{ 
     ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e){ 
     // Something went wrong 
       var xl=xmlhttp.responseText 
     alert("Something Went wrong"); 
     return false; 
      } 
     } 
    } 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      var xl=ajaxRequest.responseText; 
alert (xl); 


     } 
    } 
    ajaxRequest.open("POST","dat.php?q="+str, true); 
    ajaxRequest.send(null); 
} 


</script> 
</body> 
</html> 

代碼這是dat.php

<?php 


$q=$_POST['q']; 

echo $q; 

?> 

請注意,上面的代碼時,我用GET替代POST正常工作。任何ides爲什麼發生這種情況。

+2

如果jQuery是一個選項,我建議使用它。它使得ajax調用更簡單。 –

+2

當你使用post時,你不能以查詢字符串的形式發送數據。 – Satya

+0

那麼,您不會在請求正文中發送任何* POST數據* ... – deceze

回答

2

這可能幫助:

ajaxRequest.open("POST","dat.php", true); 
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
ajaxRequest.send("q="+str); 
+0

感謝哥們....明白了:) – user2288650

0

你混合POST Ajax調用與GET方式

當你發送一個AJAX調用與POST,你不必把參數的URL,但您必須使用.send()方法發送參數。

爲例:

ajaxRequest.open("POST","dat.php",true); 
ajaxRequest.send("q=" + str); 

你應該使用JS librairy如jQuery或其他,這將使它適合你,而不是重新發明輪子,並有共同的問題。