Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery Ajax获取JSON_Jquery_Ajax_Ruby On Rails 3 - Fatal编程技术网

jQuery Ajax获取JSON

jQuery Ajax获取JSON,jquery,ajax,ruby-on-rails-3,Jquery,Ajax,Ruby On Rails 3,我有一段代码: $.ajax({ url: '/piece.json', type: "GET", dataType: "json", success: function (data) { alert(data); } }); 我使用的是rail3应用程序,当我键入“/piece.json”时,我在浏览器上得到了我想要的东西。但是我不能用Javascript让它保持警惕!为什么会发生这种情况 已解决,必须使用此选项: complete: function (data_response)

我有一段代码:

$.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
的工作路线。使用浏览器中的开发人员工具并从rails应用程序登录,查看XHR请求的进展情况

(查看浏览器中的http响应。)

请注意,您可以更简单地使用:

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

有可能
piece.json
不返回有效的json,因此jQuery会丢弃它。尝试将
数据类型:“json”
更改为
数据类型:“html”
,然后查看
警报(数据)
是否显示输出。如果警报显示您的数据,则json对象中存在语法错误。

尝试使用
complete
回调,而不是
success
。我不知道为什么,但是
success
回调不会启动,即使所有数据和响应都是正确的。看起来像是某种bug添加此项并查看返回的内容

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

尝试将数据类型更改为JSONP。这通常是为了克服同一原产地政策,但在您的情况下可能会奏效

$.ajax({
    url: '/piece.json',
    type: "GET",
    dataType: "jsonp",
    success: function (data) {
        alert(data);
    }
});
这对我很有用:

$.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的用法。这是我的参考资料:

piece.json
更改为
test.json
?我没有收到任何错误。我只是什么都没得到,没有警报,什么都没有。警报(数据)有时警报在回调中工作不好在我看来就像文件引用错误。。请确保正确传递url。。同时点击chrome和Firebug中的F12按钮,检查是否有请求实际发布到浏览器。。如果你看到了,那就好了。。否则,您的ajax请求或文件引用会出错。.firebug说GET请求成功,并显示了我想要的字符串,但Javascript代码不起作用{“readyState”:4,“responseText”:“DOWN”,“status”:200,“statusText”:“OK”}是否使用有效的JSON标记进行响应?控制台中是否存在JS错误?