我坚持这个奇怪的语法错误指向第一个键中的冒号:json返回的值对。 JSONLint.com说json是有效的。有人可以帮忙吗? JSFiddle链接如下。感谢
http://jsfiddle.net/gbkester/hgt8bvb8/
$(document).ready(function() {
$.ajax({
type: "GET",
url: "http://forecast.weather.gov/MapClick.php?lat=38.14000&lon=-78.45000&FcstType=digitalJSON",
dataType: 'jsonp',
success: function (json) {
console.log(json)
}
})
})
答案 0 :(得分:1)
在我看来,这个响应实际上并不是JSONP。它看起来像直JSON。
通常,JSONP端点接受callback=
URL参数。此参数的值用于命名包装实际对象的函数。所以,例如:
http://example.com/api/endpoint?callback=foobar
会返回类似的内容:
foobar({"key":"value"});
你可以在小提琴中看到jQuery尝试这个:
http://forecast.weather.gov/MapClick.php?...&callback=jQuery11100967190676368773_1409103826888&_=1409103826889
callback=
正在命名要返回的函数,_=
是缓存清除的尝试。它希望看到一个看起来像的响应:
jQuery11100967190676368773_1409103826888({ ... });
添加或删除此参数似乎不会更改响应内容。如果没有API文档,它们可能会使用不同的参数。例如,如果他们使用bazquux
作为参数,您可以将请求更改为:
$.ajax({
...
url: "http://forecast.weather.gov/MapClick.php?lat=38.14000&lon=-78.45000&FcstType=digitalJSON&bazquux=?",
...
})
请注意文字&bazquux=?
。
答案 1 :(得分:0)
你缺少分号: