当前位置: 首页 > 面试题库 >

使用JQuery的JSON Get请求(跨域)

翟修永
2023-03-14
问题内容

我正在尝试向不受控制的域上的API发出一个简单的JSON获取请求。

我的代码很简单:

$(document).ready(function () {
        $.ajax({
            type: 'GET',
            url: 'http://pubapi.cryptsy.com/api.php?method=marketdatav2',
            success: function (data) {
                console.log(data);
            }
        });
});

但这是跨域请求,因此我在Chrome控制台中收到此错误:

XMLHttpRequest cannot load http://pubapi.cryptsy.com/api.php?method=marketdatav2. No 'Access-Control- Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.

当我尝试添加参数时dataType: 'jsonp'控制台将返回此错误:

未捕获到的SyntaxError:意外令牌:

但是,当我检查Chrome中的“网络”标签时,我看到“标题”下的状态代码为200
OK,实际上我可以在“响应”标签中看到完整的响应,但控制台仍显示“意外令牌:”错误和JQuery JSON请求仍然失败。

这是JS Fiddle链接:http :
//jsfiddle.net/6Qcq2/您可以看到相同的结果

我尝试在http://www.hurl.it上运行该url ,它向我显示Status
OK(正常)和响应,因此我必须做错了什么。

我整天都在浪费精力,试图弄清楚如何解决这个问题。

非常感激你的帮助。


问题答案:

API的响应是JSON,而不是JSONP,因此仅更改数据类型无济于事。

您可以使用发出请求并将JSON转换为JSONP的代理:

$(document).ready(function () {
    $.ajax({
        type: 'GET',
        url: 'http://jsonp.guffa.com/Proxy.ashx?url=pubapi.cryptsy.com%2fapi.php%3fmethod=marketdatav2',
        dataType: 'jsonp',
        success: function (data) {
            console.log(data);
        }
    });
});

演示:http://jsfiddle.net/6Qcq2/1/



 类似资料:
  • 问题内容: 帮助,如果您可以- 情况: http://foobar.com包含一个远程托管的Javacript文件(http://boobar.com/stuff.js)。 目标是从foobar.com上的远程托管php脚本中获取警报 我在stuff.js中尝试了以下代码: 没运气。 也没有运气。 在php端,我尝试了以下两种方法: 在Firefox中,出现安全错误。我了解它认为我违反了安全模型。

  • 问题内容: 对于一个项目,我需要获取其他不同域的网页的源代码。我尝试了以下代码: 我仍然没有得到任何结果,只是一个空白的警告框。 问题答案: 默认情况下,所有浏览器都限制跨域请求,您可以使用YQL作为代理来解决此问题。在此处查看指南:http://ajaxian.com/archives/using-yql-as-a- proxy-for-cross-domain-ajax

  • 问题内容: 我想用以下代码用jquery ajax解析JSON数组数据: 我的JSON数据是: 但是我没有任何输出…任何人请帮忙… 问题答案: 概念解释 您是否正在尝试进行跨域AJAX调用?意思是,您的服务不在同一Web应用程序路径中托管吗?您的Web服务必须支持方法注入才能执行JSONP。 您的代码看起来不错,并且如果您的Web服务和Web应用程序托管在同一域中,则该代码应该可以正常工作。 当您

  • 问题内容: 我正在为Android创建一个PhoneGap应用。为了从(远程)服务器获取数据,我使用jQuery的$ .ajax()函数进行了REST调用。您必须了解几件事: 通话类型必须为POST 服务器需要JSON数据(至少用户名和密码) 服务器发回JSON数据 代码: 但是,这不起作用。当我使用Firebug查看服务器响应时,什么都没有。使用TcpTrace,我可以看到请求的标头。除了期望的

  • 我想显示数据从API使用angularJS。当在同一台电脑上运行代码时,这段代码工作正常。但是当我试图在另一台电脑上测试时,它显示错误,请求的资源上没有访问控制允许来源的标头。angularjs 我使用的是1.4.8 这是我的密码:

  • 本文向大家介绍jQuery使用ajax跨域请求获取数据,包括了jQuery使用ajax跨域请求获取数据的使用技巧和注意事项,需要的朋友参考一下 跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作,所以跨域能力也算是前端工程师的基本功