2013-06-13 182 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編碼。您也可以發送多部分表單數據。 –