我正在进行一个返回JSON对象的AJAX调用,并成功地在浏览器中使用JSON。但是,成功函数没有被触发,而是错误块被命中,消息只是说"错误"这不是很重要。状态是200或304,我可以在开发人员工具中看到网络上的对象,所以它在那里,但我无法在成功函数中访问该对象。
这是ajax调用:
$.ajax({
type: "get",
dataType: "json",
jsonp: "false",
url: "http://my.api.url:8080/quote",
success: function(r){
var q = r;
$("#quote").append(q);
},
error: function(xhr, status, error) {
console.log(xhr);
}
});
JSON:
{"msg":[{"quote":"quote goes here"}]}
JSON是由带有response.json()的快速/节点应用程序生成的,如果影响了这些东西,那对我来说相对较新。我已经尝试使用contentType将jsonp设置为false:' application / json; charset = utf-8',超过数据类型json,以及其他无效尝试。任何帮助/批评都表示赞赏。
答案 0 :(得分:1)
所以这里的问题实际上是CORS,跨源资源共享,因为jQuery从不同的端口调用API,CORS按照安全标准阻止了生成的JSON数据。对node.js app添加一个简单的中间件,调整用于处理CORS的头文件就可以解决问题,例如。
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,Content-Type, Accept");
next();
});
因此json基本上在浏览器中,但由于标题而无法访问任何脚本。如果其他人遇到这个问题,这些页面会有很大的帮助。
Enable Cors {
{3}}