我正在尝试使用 Ajax 获取数据。
数据是json。我用jquery
和angular
.
但结果是未定义或错误。
这是我的 jquery 代码:
$(document).ready(function() {
var url = "http://market.dota2.net/history/json/";
$.ajax({
type: 'GET',
url: url,
async: false,
contentType: "application/json",
dataType: 'jsonp',
success: function(data) {
console.log(data);
}
});
});
在 Angular 中,我使用 jsonp 方法。怎么了?
顺便说一下,在纯Java中我可以从这个url获取数据...
最佳答案
Whats wrong?
您正在尝试调用提供 JSON 的端点,就像它提供 JSONP 一样。那是行不通的;它们是不同(尽管相关)的格式。
示例 JSON :
{"foo":"bar"}
示例 JSONP :
callback({"foo":"bar"})
注意区别:JSONP 实际上是一个 JavaScript 函数调用,包裹在 JSON 周围。
如果 API 支持 JSONP,请调用支持它的端点。
如果没有,则无法直接查询,除非提供者支持Cross-Origin Resource Sharing并与您的起源共享,因为 Same Origin Policy这适用于 ajax 调用。
By the way, in pure Java i can get data from this url...
因为 Java 代码不在 SOP 控制的上下文中运行,因此可以从该端点获取数据(作为 JSON)并使用它。这也与只需将该 URL 发布到浏览器地址栏即可让我们看到数据的原因相同。但 ajax 调用受更严格的规则约束。
关于javascript - 从其他站点获取 JSON(P),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31742637/