我使用以下代码访问托管在其他域上的其他服务。
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType:"jsonp",
success: function(json) {
alert(json);
},
error: function(e) {
console.log(e.message);
}
});
我能够正确获取数据,但是我在mozilla中的firebug中出现了这个错误:
SyntaxError:missing;在陈述之前
{"你好":"世界"}
有谁能告诉我这里我做错了什么?即使Json数据有效。我尝试了question中发布的所有建议,但我仍然遇到同样的错误。
答案 0 :(得分:3)
如果您要求的确是JSON,请不要将"jsonp"
设置为dataType
,并且不提供回调:
$.ajax({
type: 'GET',
url: url,
contentType: "application/json",
success: function(json) {
alert(json);
},
error: function(e) {
console.log(e.message);
}
});
答案 1 :(得分:0)
JSON和JSONP的格式略有不同 JKSONP是一个函数调用表达式
callback({"hellow":"world"});
而JSON只是一个序列化对象
{"Hello":"world"}
从您发布的内容看起来服务器正在返回JSON而不是JSONP
因此您需要更改服务器以正确回复(实际的回调名称是请求的get参数)。如果您使用跨域的ajax调用
,则应该这样做如果您没有跨域使用ajax,请坚持使用常规JSON