0

正常に動作していた xmlHTTPrequest GET スクリプトがありましたが、サーバーの問題のため、それを POST メソッドに変更する必要がありました。$_POST 変数のデータを取得できません。CHROME INSPECTOR デバッグ ツールで確認したところ、GET メソッドのステータスは 200 ok です。JavaScript が正しいかどうかを確認するには、ヘルプが必要です。

xmlHTTP 要求ファイル:

    <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 ファイルからのユーザー選択に従ってテーブルを更新する 2 番目のスクリプト:

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

include_once 'db.php';

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

?>  
4

1 に答える 1

1

AJAX コードを見ると、POST 変数が正しく指定されていません。与えられる POST 文字列のxmlhttp.send()形式は、GET 文字列と同じ形式である必要があります。使ってみxmlhttp.send("q2=" + q2)ます。

ところで、今後の参考のためにprint_r($_POST)、すべての POST 変数の内容を表示するために使用できます。これは、デバッグに非常に便利です。

于 2013-06-13T04:35:20.303 に答える