AJAX即使没有失败也会失败?

时间:2013-02-11 15:33:34

标签: php javascript jquery ajax

我正在运行一个像以前一样的AJAX函数。这一次很奇怪。虽然XHR控制台给我200 / Success,但错误回调仍在继续。

function runNewprop() {
   var nurl = 'http://www.mysite.com/myscript.php';

$.ajax({
    url: nurl,
    dataType: 'json',
    success: function(data){
        $('#nl_details').html('');
        $each(data, function (key, value){
            var mlsnum = value[0];

            $('#nl_details').append('<div class="nl_list"><h5>'+mlsnum+'</h5></<div>');
        });
    },
    error: function(){
        alert('Oops!');
    }
});
}

然后是PHP文件:

<?php
$link = mysql_connect('localhost','username','password');
mysql_select_db('singleprop', $link);
$date = mysql_real_escape_string($_GET['date']);
$sort = mysql_real_escape_string($_GET['sort']);
$query = "
    SELECT * FROM jos_mls
        JOIN jos_activeagents AS active ON singleprop.jos_mls.MSTLISTBRD = active.AGENTUID
        JOIN jos_agents AS agents ON active.AGENTUID = agents.AGTBRDIDMM
    ";

if ($date == 'week') {
    $query .= "AND MSTLISTDT >= DATE_ADD(CURDATE(), INTERVAL -7 DAY)";
}
elseif ($date == 'twoweek') {
    $query .= "AND MSTLISTDT >= DATE_ADD(CURDATE(), INTERVAL -14 DAY)";
}
elseif ($date == 'month') {
    $query .= "AND MSTLISTDT >= DATE_ADD(CURDATE(), INTERVAL -31 DAY)";
}
elseif ($date == 'twomonth') {
    $query .= "AND MSTLISTDT >= DATE_ADD(CURDATE(), INTERVAL -62 DAY)";
}



if ($sort == 'agent') {
    $query .= " ORDER BY AGTLNAME";
}
elseif ($sort == 'city') {
    $query .= " ORDER BY MSTCITY";
}
elseif ($sort == 'zip') {
    $query .= " ORDER BY MSTZIP";
}
elseif ($sort == 'county') {
    $query .= " ORDER BY MSTCOUNTY";
}
else {
    $query .= " ORDER BY MSTLISTDT";
}

$query .= ";";


$result = mysql_query($query);
$data = mysql_fetch_array($result);
return json_encode($data);

mysql_close($link);

?>

我的语法错过了什么?当我回显出构建的查询并将其复制到我的控制台并运行它时,一切顺利。但是当我尝试通过AJAX运行时,我获得了成功/ 200,但错误回调发生了。

2 个答案:

答案 0 :(得分:2)

您在成功回调中遇到错误。更改以下行:

$each(data, function (key, value){

$.each(data, function (key, value){

答案 1 :(得分:2)

问题是你的PHP没有输出有效的JSON。您在ajax调用中指定了json作为数据类型,这意味着如果jQuery无法解析生成的JSON,它将触发error函数。

在你的PHP中你应该回应不返回,改为:

echo json_encode($data);

同时验证没有输出任何其他内容(例如错误或通知消息)。

最后,正如@whirlwin指出的那样,你在成功函数中遇到$.each语法错误,虽然这不是你的根本问题,但是当你修复JSON输出时它会成为一个问题。