14

私はこのコードを持っています:

$.ajax({
url: '/piece.json',
type: "GET",
dataType: "json",
success: function (data) {
    alert(data);
}
});

「/piece.json」と入力すると、ブラウザで必要なものが表示されます。しかし、Javascriptを使用して警告することはできません! なぜこれが起こるのですか?

解決済み、これを使用する必要がありました:

complete: function (data_response) {

    alert(data_response.responseText);
},
4

6 に答える 6

6

piece.json有効な JSON が返されない可能性があるため、jQuery はそれを破棄します。に変更dataType: "json"して、出力が表示さdataType: "html"れるかどうかを確認してください。alert(data)アラートにデータが表示される場合は、json オブジェクトに構文エラーがあります。

于 2012-09-07T16:36:23.220 に答える
6

これは私のために働いた:

$.getJSON( "example.json", function(data) {
   console.log( "success" );
}).done(function() {
   console.log( "second success" );
})
.fail(function() {
  console.log( "error" );
})
.always(function() {
   console.log( "complete" );
});

example.json を、json ファイルの URL またはパスに置き換えます。$.getJSON と $get の使用に注意してください。ここに私の参照があります: http://api.jquery.com/jquery.getjson/

于 2015-12-07T19:57:49.250 に答える
2

completeの代わりにコールバックを使用してみてくださいsuccess。理由はsuccessわかりませんが、すべてのデータと応答が正しい場合でも、コールバックは発生しません。ある種のバグのように見えます

于 2012-09-07T16:36:25.207 に答える
2

おそらく、 の有効なルートがありません/piece.json。ブラウザーで開発者ツールを使用し、Rails アプリからログに記録して、XHR 要求で何が起こっているかを確認します。

(ブラウザで http 応答を見てください。)

より簡単に使用できることに注意してください。

$.get('/piece.json',function(data){
  // data is a JS object parsed from a JSON response
},'json');
于 2012-09-07T16:31:55.230 に答える
2

データ型を JSONP に変更してみてください。通常、Same Origin Policy を克服するためですが、あなたの場合はうまくいくかもしれません。

$.ajax({
    url: '/piece.json',
    type: "GET",
    dataType: "jsonp",
    success: function (data) {
        alert(data);
    }
});
于 2012-09-07T16:39:32.267 に答える
1

これを追加して、何が返されるかを確認します

error: function (error) {
    alert(JSON.stringify(error));
}
于 2012-09-07T16:38:02.663 に答える