我有这个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。
答案 0 :(得分:2)
尝试将defined('_JEXEC') or die;
更改为define('_JEXEC', 1) or die;
。注意我使用 define 而不是定义。对于很多人在其扩展中集成Ajax而言,这是一个问题,因为defined('_JEXEC') or die;
通常会出于安全原因阻止它。
答案 1 :(得分:0)
您可以按照以下方式调试上述方案。
检查您的PHP页面是否被AJAX查询命中。为了做到这一点回应“某事”,并在firebug响应选项卡上看到它。 defined('_JEXEC') or die;
可能会停止脚本等等。
确保AJAX URL正确并将POST数据正确传递给PHP端。
检查您的MYSQL查询是否正确,并返回您想要的数据。
确保从PHP方面检索响应并在AJAX成功函数中显示它。
在此过程中注意JS错误。为了确保您没有错误,您可以使用firebug。