私はこのコードを持っています:
$.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);
},
_piece.json
_が有効なJSONを返さないため、jQueryがそれを破棄する可能性があります。 _dataType: "json"
_を_dataType: "html"
_に変更して、alert(data)
が出力を表示するかどうかを確認してください。アラートにデータが表示されている場合は、jsonオブジェクトに構文エラーがあります。
これは私のために働いた:
$.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/
おそらく、/piece.json
の作業ルートがありません。ブラウザで開発者ツールを使用し、Railsアプリからログを記録して、XHRリクエストで何が起こっているかを確認します。
(ブラウザでhttp応答を見てください。)
より簡単に使用できることに注意してください。
$.get('/piece.json',function(data){
// data is a JS object parsed from a JSON response
},'json');
complete
の代わりにsuccess
コールバックを使用してみてください。理由はわかりませんが、すべてのデータと応答が正しい場合でも、success
コールバックは発生しません。ある種のバグのように見えます
データ型をJSONPに変更してみてください。通常、同一生成元ポリシーを克服することですが、あなたの場合はうまくいくかもしれません。
$.ajax({
url: '/piece.json',
type: "GET",
dataType: "jsonp",
success: function (data) {
alert(data);
}
});
これを追加して、何が返されるかを確認してください
error: function (error) {
alert(JSON.stringify(error));
}