14

我有这段代码:

$.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);
},
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

大概你没有工作路线/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。通常是为了克服同源政策,但可能适用于您的情况。

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

尝试使用complete回调而不是success. 我不知道为什么,success即使所有数据和响应都正确,回调也不会触发。看起来像某种错误

于 2012-09-07T16:36:25.207 回答
1

添加这个,看看返回了什么

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