2013-06-13 139 views
1

我有xmlHTTPrequest GET脚本工作正常,但由于服务器问题,我不得不将它更改为POST方法。我无法获取$ _POST变量中的数据。当我检查了CHROME INSPECTOR调试工具时,GET方法状态为200 OK。需要帮助,看看JavaScript是否正确。xmlHTTPRequest POST不发送数据

XMLHttpRequest的文件:

<script type="text/javascript"> 

     function showprodes(str2) 
     { 
     var q2 = encodeURIComponent(str2); 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      var url = "http://www.amg.in/amogtst/rateprod.php"; 
     xmlhttp.open("POST", url, true); 
     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
     xmlhttp.send(q2); 
     } 


    </script> 

    <? 

     $result2 = mysql_query("SELECT Prod_desc FROM PRODMAST ORDER BY Prod_desc"); 

     echo "<form name='f1'>"; 

     echo " <span class='style3'>Gas Type &nbsp;</span> <select name='Proddesc' onchange=\"showprodes(this.value);\"><option value=0>Select a Product</option>"; 
     while($nt2=mysql_fetch_assoc($result2)) 
     { 
     echo "<option value='$nt2[Prod_desc]'>$nt2[Prod_desc]</option>"; 
     } 
     echo "</select>";// Closing of list box 

      echo "</form>"; 
    ?>  

二脚本更新表按照从第一个PHP用户选择:rateprod.php文件:

<?php 
$q=$_POST['q2']; 
$q2=mysql_real_escape_string($q); 

include_once 'db.php'; 

mysql_query("UPDATE RATEMASTER_draft SET Prod_desc='$q2'"); 

?> 

回答

2

从看你的AJAX代码,你AREN不正确地提供POST变量。 POST字符串的格式为xmlhttp.send(),其格式必须与GET字符串的格式相同。尝试使用xmlhttp.send("q2=" + q2)

顺便说一句,为了将来参考,您可以使用print_r($_POST)来显示所有POST变量的内容。这对调试非常有用。

+1

对于POST'ing多个变量,您可以使用类似于:'xmlhttp.send(“q2 =”+ q2 +“&q3 =”+ q3)' –

+0

非常感谢,现在工作正常。我试图从昨天解决这个问题在stackoverflow,但没有人能够给出这样一个简单的答案,你已经让我的一天。荣誉迈克! –

+0

你不得使用URL编码。您也可以发送多部分表单数据。 –