0

私はこのAJAXを持っています

   function  getValFromDb() {
   var university = document.getElementById('category').value;
   var domain = document.getElementById('subcategory').value;
   var year = document.getElementById('an').value;
   var url = "modules/mod_data/tmpl/script.php";

  var params = 'uni='+university+'&fac='+domain+'&an='+year;
    if (window.XMLHttpRequest) { AJAX=new XMLHttpRequest(); } else { AJAX=new ActiveXObject("Microsoft.XMLHTTP"); }
    if (AJAX)
    {
        AJAX.open("POST", url, false);
        AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        AJAX.onreadystatechange = function()
        {
            if(AJAX.readyState == 4 && AJAX.status == 200)
            {
             document.getElementById('materie').innerHTML = AJAX.responseText;
            }
        }; 

    } AJAX.send(params);
    }

送信パラメータをここに

<?php
defined('_JEXEC') or die;
$db = JFactory::getDbo();

$an=$_POST('an');
$fac=$_POST('fac');
$uni=$_POST('uni');
  $result1 =mysql_query("SELECT DISTINCT (materie) FROM drv_uni_$uni WHERE an='$an'");
while($row = mysql_fetch_array($result1)){
    $display_string .= "<option value=\"".$row['id']."\">". $row['materie'] ."</option>";
} 

  echo $display_string;
?>

ファイアーバグからの投稿

      Parametersapplication/x-www-form-urlencoded
      an    an-3
      fac   Finante Banci
      uni   ase
      Source
      uni=ase&fac=Finante Banci&an=an-3

そしてヘッダー

     Response Headers

        Connection  keep-alive
      Content-Encoding  gzip
       Content-Type text/html
       Date Sun, 30 Dec 2012 13:12:47 GMT
      Server    xServers
      Transfer-Encoding chunked
       X-Powered-By PHP/5.3.16

リクエスト ヘッダー

       Accept   text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      Accept-Encoding   gzip, deflate
      Accept-Language   en-US,en;q=0.5
        Connection  keep-alive
     Content-Length 33
        Content-Type    application/x-www-form-urlencoded; charset=UTF-8
       Cookie   0dea1a59adf779fae552e16f3d646b24=91481693c6b3c8615aa9ce57461aa590; 33a66e84ea7ae1332853383606d933e1=2039ee6737b4252207431790f5f7a939
              DNT   1
        Host    www.domain.ro
       Referer  http://www.domain.ro/upload
       User-Agent   Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0

応答は空です!

Jsはphpから何も受け取りません。PHPは値を正しく取得しましたが、送信してもjsに戻りません。JSON の使用方法やこのコードを修正する方法を教えてほしい場合は、感謝します。

4

2 に答える 2

2

に変更defined('_JEXEC') or die;してみてくださいdefine('_JEXEC', 1) or die;定義済みの代わりに定義を使用していることに注意してください。これは、セキュリティ上の理由から通常はAjaxをブロックするため、拡張機能にAjaxを統合する多くの人々にとって問題となっています。defined('_JEXEC') or die;

于 2012-12-30T13:47:34.730 に答える
0

上記のシナリオは次のようにデバッグできます。

  1. PHP ページが AJAX クエリにヒットしているかどうかを確認します。これを行うには、「何か」をエコーし​​て、firebug 応答タブに表示される内容を確認します。defined('_JEXEC') or die;スクリプトなどを停止している可能性があります。

  2. AJAX URL が正しく、POST データが PHP 側に正しく渡されていることを確認してください。

  3. MYSQL クエリが正しく、必要なデータが返されるかどうかを確認してください。

  4. PHP 側から応答を取得し、それを AJAX 成功関数で表示するようにしてください。

  5. 処理中の JS エラーに注意してください。エラーがないことを確認するには、firebug を使用できます。

于 2012-12-30T13:32:16.840 に答える