在AJAX和php之间发送数据

时间:2012-12-30 13:20:19

标签: php ajax joomla

我有这个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;
?>

来自萤火虫的POST

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

和HEADERS

     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或核心这个代码我是apreciate。

2 个答案:

答案 0 :(得分:2)

尝试将defined('_JEXEC') or die;更改为define('_JEXEC', 1) or die;。注意我使用 define 而不是定义。对于很多人在其扩展中集成Ajax而言,这是一个问题,因为defined('_JEXEC') or die;通常会出于安全原因阻止它。

答案 1 :(得分:0)

您可以按照以下方式调试上述方案。

  1. 检查您的PHP页面是否被AJAX查询命中。为了做到这一点回应“某事”,并在firebug响应选项卡上看到它。 defined('_JEXEC') or die;可能会停止脚本等等。

  2. 确保AJAX URL正确并将POST数据正确传递给PHP端。

  3. 检查您的MYSQL查询是否正确,并返回您想要的数据。

  4. 确保从PHP方面检索响应并在AJAX成功函数中显示它。

  5. 在此过程中注意JS错误。为了确保您没有错误,您可以使用firebug。