javascript - 无法获取json数据,给出Cors或回调错误

标签 javascript jquery json cors

我正在尝试从 REST API 获取一些 JSON 数据,但是当我调用它时,dataType 参数为 jsonp 的 AJAX 请求会出现错误jQuery“回调未被调用”。这是错误消息:

Error: Status: parsererror Message: Error: jQuery2130732580496231094_1429605569499 was not called

因此,如果我尝试在没有 jsonp 的情况下发出此请求,并使用 JSON 作为 dataType,则会出现另一个有关 CORS 的错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我知道这是一个白痴问题,但我读过有关 CORS 的内容,只是不知道在哪里放置它的参数来启用它。对我来说,正确的方法是使用我使用过的第一种方法,但是在寻找该问题的答案之后,我什么都不明白。如果有一天我能理解将 CORS 放在哪里,我应该用另一种方式发出请求。

所以它们是我的问题,这是我的代码:

$.ajax({ 
    url: 'eztvapi.re/shows/1';, 
    type: 'GET', 
    dataType: 'jsonp', 
    crossDomain: true, 
    success: function(data) { 
        //data = JSON.parse(data); 
        console.log(data); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
        console.log("Error: Status: " + textStatus + " Message: " + errorThrown); 
    } 
}); 

这是我从控制台发出的 header 请求:

    Remote Address:216.58.222.12:443
Request URL:http://eztvapi.re/shows/1?callback=jQuery213010618196451105177_1429606458524&_=1429606458525
Request Method:GET
Status Code:200 OK
Response Headers
cache-control:private
content-encoding:gzip
content-type:application/json; charset=utf-8
date:Tue, 21 Apr 2015 08:54:22 GMT
etag:W/"0hnqCn40L98JLmwY2UfUlg=="
server:nginx
status:200
vary:Accept-Encoding
via:1.1 Chrome-Compression-Proxy
x-powered-by:Express
x-response-time:32ms
x-served-by:us-la3
Request Headers
:authority:eztvapi.re
:method:GET
:path:/shows/1?callback=jQuery213010618196451105177_1429606458524&_=1429606458525
:scheme:http
accept:*/*
accept-encoding:gzip, deflate, sdch
accept-language:pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
chrome-proxy:ps=1429584828-1395746459-275388119-220935266, sid=a259cd2eeb457c7a40ff6367868ef723, c=win, b=2311, p=90
user-agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
Query String Parameters
view source
view URL encoded
callback:jQuery213010618196451105177_1429606458524
_:1429606458525

这是请求返回的 json 对象,但它仅出现在控制台网络部分:

 0: {_id: "tt0944947",…}
1: {_id: "tt0903747",…}
2: {_id: "tt0898266",…}
3: {_id: "tt1520211",…}
4: {_id: "tt0773262",…}
5: {_id: "tt0460649",…}
6: {_id: "tt1475582",…}
7: {_id: "tt2193021",…}
8: {_id: "tt1796960",…}
9: {_id: "tt1119644",…}
10: {_id: "tt0411008",…}   

我最近收到了很多要求再次休息的请求,所以我认为客户端的说法是正确的。这是一个新服务器,我正在测试我的请求,但这不是我的服务器域,这低于一个流行的休息服务器,我相信它支持 json 调用。有趣的是,自从我开始使用这个新产品以来,我一直在问自己,我得到的回应是什么。您可以看到服务器使用正确的数据回答了我的请求,但我无法将数据发送到我的 javascript,以打印或处理它。
感谢您的帮助。

最佳答案

Error: Status: parsererror Message: Error: jQuery2130732580496231094_1429605569499 was not called

您请求数据的服务器必须支持 JSONP,以便您能够向其发出成功的 JSONP 请求。

参见the Wikipedia article有关如何执行此操作的详细信息。

I've read about CORS and just don't get where to put it's params to enable it.

在您发出请求的服务的 HTTP 响应 header 中。

例如您在 example.com 上的页面想要使用 JS 从 example.net 获取数据。因此,example.net 必须告诉用户的浏览器允许 example.com 访问数据。

关于javascript - 无法获取json数据,给出Cors或回调错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29767122/

相关文章:

json - Flutter:将字符串转换为 Map

javascript - 如何将数字转换为字母形式,例如。 3 到 3,然后 className = 3?

javascript - 提交前更改表单属性

jquery - 在 jQuery 中指定嵌套元素的更快方法?

javascript - 多个 slider ,控制所有 slider 的按钮

python - 我可以无损恢复 json.dumps() 已转换为字符串的整数键吗?

javascript - 检查申请状态并在可用时继续

javascript - 匹配以下字符串的正则表达式

javascript - 无法读取未定义的属性 'hasTime'

json - 如何使用 Bash 删除 json 文件中的最后一个逗号?