jQuery 初试jsonp

说来惭愧,写了这么久的前端(大概),还没有使用过jsonp(后来我发现假期用Angular+Rails使用过。。。http://codesky.me/archives/rails-solve-cross-query.wind),这次在微博中,一个好友遇到了一个需要跨域的问题,那么机会来了。

我第一反应就是jsonp,尽管他说不可以,然而我还是想要试试看。

用最顺手的jQuery吧,话虽如此,jQuery也快忘了。

首先查了一下,jsonp的使用方式,其实就是调用执行那样:http://stackoverflow.com/questions/5943630/basic-example-of-using-ajax-with-jsonp

再这里有一些其他基本用例:http://www.sitepoint.com/jsonp-examples/

基本上,似乎也就是普通的json传递加了一点东西的事情,然而我在使用$.ajax的时候却出现了error,似乎是json的格式错误了,这不科学。

在stackoverflow也有一个相同的问题:http://stackoverflow.com/questions/10507345/ajax-and-jsonp-parseerror-and-uncaught-syntaxerror-unexpected-token

似乎从回答中,意思是$.ajax不能这么传入json,那么好吧,好在我们有$.getJson

$.getJSON('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1', function(result) {
    console.log(result.images[0].url);
    $('body').css('background-image', 'url(' + result.images[0].url + ')');
})

这样就行了,demo

---- 更新 ----

由于bing的该页不支持跨域访问(真是狠狠被坑了一把),所以之后的文章中我们进行了再加工,下一篇用PHP在加工这个Bing的不公开API。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 成品, 知识, 代码段, 语法, jQuery

已有 3 条评论

  1. 你的Demo:

    XMLHttpRequest cannot load http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://test.codesky.me' is therefore not allowed access.

    So....

    还是Error啊~

添加新评论