Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax jQuery跨域请求获取JSON响应,无需回调_Ajax_Jquery_Cross Domain - Fatal编程技术网

Ajax jQuery跨域请求获取JSON响应,无需回调

Ajax jQuery跨域请求获取JSON响应,无需回调,ajax,jquery,cross-domain,Ajax,Jquery,Cross Domain,我正在尝试从此URL检索JSON http://www.iheartquotes.com/api/v1/random?format=json 通过jQuery。我知道解决方案是JSONP,但由于我无法控制服务的响应文本或将其包装在自己的回调函数中,因此我的目标是使用客户端脚本以某种方式检索上述URL的响应 我尝试了StackOverflow的几个答案中建议的几乎所有方法。 这些是我尝试过的代码块和得到的响应 一,。返回预期访问控制允许来源错误的直接调用 答复: 无法加载XMLHttpReque

我正在尝试从此URL检索JSON

http://www.iheartquotes.com/api/v1/random?format=json
通过jQuery。我知道解决方案是JSONP,但由于我无法控制服务的响应文本或将其包装在自己的回调函数中,因此我的目标是使用客户端脚本以某种方式检索上述URL的响应

我尝试了StackOverflow的几个答案中建议的几乎所有方法。 这些是我尝试过的代码块和得到的响应

一,。返回预期访问控制允许来源错误的直接调用

答复:

无法加载XMLHttpRequest =1376682146029">http://www.iheartquotes.com/api/v1/random?format=json&=1376682146029. 不允许使用源代码 访问控制允许源

2.添加回调参数的上述代码:

答复:

未捕获的语法错误:意外标记:

请注意,当我点击这个错误时,它会将我带到预期的JSON响应

{"json_class":"Fortune","tags":["simpsons_homer"],"quote":"Holy Moly!  The bastard's rich!\n\n\t\t-- Homer Simpson\n\t\t   Oh Brother, Where Art Thou?","link":"http://iheartquotes.com/fortune/show/5501","source":"simpsons_homer"}
这也是预期的,因为响应中没有定义回调函数

{"json_class":"Fortune","tags":["simpsons_homer"],"quote":"Holy Moly!  The bastard's rich!\n\n\t\t-- Homer Simpson\n\t\t   Oh Brother, Where Art Thou?","link":"http://iheartquotes.com/fortune/show/5501","source":"simpsons_homer"}
3.通过jQuery的Ajax方法

答复:

未捕获的语法错误:意外标记:

将回调参数添加到上述函数不会更改响应

{"json_class":"Fortune","tags":["simpsons_homer"],"quote":"Holy Moly!  The bastard's rich!\n\n\t\t-- Homer Simpson\n\t\t   Oh Brother, Where Art Thou?","link":"http://iheartquotes.com/fortune/show/5501","source":"simpsons_homer"}
专家们有没有关于从URL检索JSON的帮助或建议?我正在使用Chrome开发工具进行测试。我知道我可以从服务器端代码调用该服务,然后将其发送到客户端。但我想看看这是否可以从客户端通过jQuery单独完成

编辑: 根据Kevin B的评论: 使用jQuery的Ajax通过YQL获得了预期的输出。但我的问题仍然是一样的。有没有一种原生的方式通过jQuery实现,因为YQL仍然是一种依赖关系

// Using YQL and JSONP
$.ajax({
    url: "http://query.yahooapis.com/v1/public/yql",

    // the name of the callback parameter, as specified by the YQL service
    jsonp: "callback",

    // tell jQuery we're expecting JSONP
    dataType: "jsonp",

    // tell YQL what we want and that we want JSON
    data: {
        q: "select * from json where url=\"http://www.iheartquotes.com/api/v1/random?format=json\"",
        format: "json"
    },

    // work with the response
    success: function( response ) {
        console.log( response.query.results.json ); // server response
    }
});

这将给出预期的响应。

这不会在所有浏览器中都起作用,但取决于您使用的JQuery版本,请尝试:

{"json_class":"Fortune","tags":["simpsons_homer"],"quote":"Holy Moly!  The bastard's rich!\n\n\t\t-- Homer Simpson\n\t\t   Oh Brother, Where Art Thou?","link":"http://iheartquotes.com/fortune/show/5501","source":"simpsons_homer"}
$.support.cors = true;

显然,这也取决于服务器响应的标题。

如果没有服务器端的干预,这是不可能的。注意,它不一定是您的服务器,google YQL。或者请参阅此处的文章:Hey@KevinB,非常感谢YQL指针。您的建议在某种程度上起到了作用。我已经编辑了我的问题,以包含新代码。喜欢斜体cized'your':整个事件的P键。我认为json中的select*会给您更好的响应,尽管它当然仍然是一个依赖项。
{"json_class":"Fortune","tags":["simpsons_homer"],"quote":"Holy Moly!  The bastard's rich!\n\n\t\t-- Homer Simpson\n\t\t   Oh Brother, Where Art Thou?","link":"http://iheartquotes.com/fortune/show/5501","source":"simpsons_homer"}