web-dev-qa-db-ja.com

jQuery Ajax GET JSON

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

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

私はrail3アプリを使用していますが、「/ piece.json」と入力すると、ブラウザーに必要なものが表示されます。しかし、Javascriptを使用してアラートを出すことはできません!なぜこれが起こるのですか?

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

complete: function (data_response) {

    alert(data_response.responseText);
},
7
Trt Trt

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

5
Peter

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

$.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/

3
phil

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

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

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

$.get('/piece.json',function(data){
  // data is a JS object parsed from a JSON response
},'json');
2
Phrogz

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

2
ck3g

データ型をJSONPに変更してみてください。通常、同一生成元ポリシーを克服することですが、あなたの場合はうまくいくかもしれません。

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

これを追加して、何が返されるかを確認してください

error: function (error) {
    alert(JSON.stringify(error));
}
1
DadViegas