2

必要に応じてJSONを出力するスクリプトがあります。PHPはヘッダーをJSONに設定し、JSONはオブジェクトをエンコードします。

JS側では、$.getJSONそれを受け取り、すべてがダンディです。

問題は、PHPがプレーンテキストを出力する場合です(これは私が対処しなければならないケースです)。

より大きな問題は、PHP側からの出力のタイプをチェックするコードを実行したいのと同じようにgetJSON、JSONタイプの出力を受け取らない限りコールバック関数をトリガーしないことです。

したがって、PHPスクリプトがエラーコードを出力した場合(JSONルーチンにエンコードされていない場合)、JSは反応しません。

PHPの出力タイプに基づいてJSが特定の方法で反応する必要がありました。

.getまたはJS関数を実行しようとしました.postが、同様に、PHPがJSONを出力すると、これらのコールバックがトリガー/起動されません。

4

1 に答える 1

2

.done()と.fail()を見たことがありますか?

$.ajax({
    url: 'blah.php',
    data: blah,
    type: 'POST',
    dataType: 'json'
}).done(function(){
    console.log('OK');
}).fail(function(jqXHR, textStatus, errorThrown){
    console.log(textStatus+"\n"+ errorThrown);
});

...また、JSONを検証するためのJSコードもあります...

// validate JSON
function is_JSON(str) {
    try {
        var c = $.parseJSON(str);
    } catch (e) {
        return false;
    }
    return true;
}
于 2013-01-15T03:29:32.597 に答える