簡體   English   中英

即使沒有失敗,AJAX也會失敗嗎?

[英]AJAX failing even though it's not failing?

我正在像以前一樣運行AJAX函數。 這次很奇怪。 雖然XHR控制台給我200 /成功,但錯誤回調不斷發生。

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,但是發生了錯誤回調。

您在成功回調中出錯。 更改以下行:

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

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

問題是您的PHP無法輸出有效的JSON。 您在ajax調用中將json指定為數據類型,這意味着jQuery如果無法解析生成的JSON,則會觸發error函數。

在您的PHP中,您應該回顯未返回的內容,請更改為:

echo json_encode($data);

還要確認沒有其他任何輸出(例如錯誤或通知消息)。

最后,正如@whirlwin指出的那樣,成功函數中存在$.each語法錯誤,雖然這不是您的根本問題,但在修復JSON輸出時將成為問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM