我正在尝试从其他服务器/域获取JSON数据/文件。
我的理解是,从下面的代码我应该能够看到成功警报,但我看到错误提醒
$.ajax({
url: "http://xxxx.com/zzzz",
dataType: 'jsonp',
success: function (json) {
alert("Success");
},
error: function () {
alert("Error");
}
});
在firebug控制台中,我看到了这个错误
SyntaxError: missing ; before statement
"responseHeader":{
如果我在浏览器中打开URL,我可以看到JSON数据,但无法获取并解析。
如果我点击浏览器中的URL以供参考
,这是JSON数据的起始部分{
"responseHeader":{
"status":0,
"QTime":4576,
"params":{
"q":"*:*",
"facet.limit":"10",
"facet.field":["DataSet",
"Site",
"Year",
"Product"],
"indent":"true",
"wt":"json",
"facet":"true"}},
"response":{"numFound":260682,"start":0,"docs":[
{
我在这里做错了什么或者我应该尝试不同的方式来访问其他域的JSON数据。
请建议。提前致谢
答案 0 :(得分:0)
试试这个:
$.ajax({
url: "http://xxxx.com/zzzz",
dataType: 'json',
success: function (json) {
alert("Success");
},
error: function () {
alert("Error");
}
});
答案 1 :(得分:0)
尝试将数据类型从“jsonp”更改为“json”
答案 2 :(得分:0)
我认为您的响应是有效的JSON字符串,但不是有效的JSONp。 JSONp中的p代表“填充”。这意味着响应必须包含在JavaScript函数中,并返回内容类型text / javascript请参阅下面的示例:
myCalllbackFunc({ my: "data" });
当您使用jQuery时,库会将回调变量作为查询参数传递给您的后端。该值定义回调函数的名称。
http://your.host/json?callback=fooBarFunc
应该导致这个
fooBarFunc({ my: "data" });
干杯, 彼得
BTW:除JSONp外,您可以使用CORS进行跨源资源共享:) http://www.html5rocks.com/en/tutorials/cors/