0

以前と同じように 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 で実行しようとすると、success/200 が返されますが、エラー コールバックが発生します。

4

2 に答える 2

2

問題は、PHPが有効なJSONを出力していないことです。jsonajax呼び出しでデータ型として指定しました。これはerror、結果のJSONを解析できなかった場合にjQueryが関数を起動することを意味します。

PHPで、エコーが返されないようにする必要があります。次のように変更します。

echo json_encode($data);

また、他に何も出力されていないことを確認します(エラーメッセージや通知メッセージなど)。

最後に、@ whirlwinが指摘しているよう$.eachに、success関数に構文エラーがあります。これは根本的な問題ではありませんが、JSON出力を修正すると問題になります。

于 2013-02-11T15:40:53.653 に答える
2

成功のコールバックにエラーがあります。次の行を変更します。

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

$.each(data, function (key, value){
于 2013-02-11T15:37:19.370 に答える