这是有效的JSON标记吗?

jdk*_*aly 3 api jquery json

我试图从俄罗斯航运网站获取一些信息.作为JON/Jquery/Internets的n00b,我无法将数据转换为json格式.

按照公司的API,我转到URL:http://emspost.ru/api/rest/?callback = json&method = theems.calculate&from = city--abakan& to = city--anadyr&weight = 1

返回:

json({"rsp":{"stat":"ok","price":"750","term":{"min":5,"max":9}}})
Run Code Online (Sandbox Code Playgroud)

在Jquery的文档之后,我尝试过:

<script>$.getJSON("http://emspost.ru/api/rest/?callback=json&method=ems.calculate&from=city--abakan&to=city--anadyr&weight=1",
        function(data){
        alert(data);
        });</script>
Run Code Online (Sandbox Code Playgroud)

返回null.知道我做错了什么吗?

Nic*_*ver 5

callback=?改为使用,如下所示:

$.getJSON("http://emspost.ru/api/rest/?callback=?&method=ems.calculate&from=city--abakan&to=city--anadyr&weight=1",
function(data){
  alert(data);
});
Run Code Online (Sandbox Code Playgroud)

然后你将在警报中得到你的对象:) JSONP的工作方式是在查询字符串中调用该函数并调用该函数(它不存在,除非你function json() {}在它返回时创建了一个.当你执行?callback=?jquery动态命名success你给出的函数时要$.getJSON()和替换它,就像这样: ?callback=FunctioNameGiven,所以它实际上将正常运行.

如果你考虑它是如何运行的,它基本上是:

<script type="text/javascript">
  //returned javascript here, e.g. FunctioNameGiven({ object data });
</script>
Run Code Online (Sandbox Code Playgroud)

这样做是因为它是一个GET请求,并且不受同源策略规则的限制,这就是JSONP在正常JSON请求被阻止的情况下的工作方式:)