从其他站点获取JSON(P)
Get JSON(P) from other site
我正在尝试使用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获取数据…
什么错了吗?
您正在尝试调用提供JSON的端点,就像它提供JSONP一样。这行不通;它们是不同的(尽管相关)格式。
示例JSON:
{"foo":"bar"}
JSONP例子:
callback({"foo":"bar"})
注意区别:JSONP实际上是一个JavaScript函数调用,封装在JSON中。
如果API支持JSONP,调用支持它的端点。
如果没有,你不能直接查询它,除非提供者支持跨域资源共享,并与你的源共享,因为同源策略适用于ajax调用。
顺便说一下,在纯Java中,我可以从这个url获取数据…
因为Java代码没有运行在由SOP控制的上下文中,因此可以从该端点获取数据(作为JSON)并使用它。这也是将URL放到浏览器地址栏中让我们看到数据的原因。但是ajax调用有更严格的规则。
如果您希望使用json,请不要使用jsonp
,而是使用json
。
$(document).ready(function() {
var url = "http://market.dota2.net/history/json/";
$.ajax({
type: 'GET',
url: url,
async: true, /* it fails with false */
contentType: "application/json",
dataType: 'json',/* <== here */
success: function(data) {
console.log(data);
}
});
});
你有意识地使用jsonp
吗?你知道这是什么吗?如果不是,使用json
。或获得有关JSonP的信息:https://en.wikipedia.org/wiki/JSONP
我在Safari上试过了:works.
Chrome &FFox:不工作+错误"Cross Domain Origin"
XMLHttpRequest无法加载http://market.dota2.net/history/json/。请求的资源上没有'Access-Control-Allow-Origin'标头。因此,不允许访问原点'null'。
这意味着你不能用你的客户端/机器从API服务器获取JSon。所以你确实应该使用JSonP,但是…你错过了API文档中的回调或其他东西
- JSON获取用户id's在嵌套数组中
- JSON:获取映射数据
- Jquery从JSON获取数据(未定义)
- 从 JSON 获取键值对而不使用 .(DOT) 在 Java 脚本或 jquery 中
- Django 使用 JSON 获取模型方法的值
- TypeError: 使用 Jquery JSON 获取数据时无效的 'in' 操作数 obj
- JSON获取地理位置在HTML中未返回值
- 从javascript中的JSON获取位置
- Angular Js无法使用浮点形式json获取int
- AngularJS,从json获取单个帖子
- 在服务器端创建html元素VS将数据作为JSON获取,并使用javascript创建标签
- 无效的“in”操作数 obj JQUERY - 尝试从 JSON 获取数据时出现类型错误
- 无法从 JSON 获取值
- 如何将动态数据从JSON获取到jvqmaps中,作为对象而不是来自php mysqli的数组
- 在 react.js 中从 Json 获取数据
- 从特定索引开始从 json 获取字符串值
- 如何在变量中存储从 JSON 获取的数据
- 无法从 JSON 获取数据
- 如何将 API 请求中的 JSON 获取到页面的 javascript 中
- 网格堆栈.js从 JSON 获取位置