jquery中使用jsonp实现跨域访问

在web2.0的时代,ajax的盛行给web带来了翻天覆地的变化,允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。不过,由于受到浏览器的限制,该方法不允许跨域通信。如果尝试从不同的域请求数据,会出现安全错误。

在工作中,我们经常会碰到跨域的问题,同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。实现跨域的方式有很多,如:使用iframe隐藏,JSONP等。

现在主流的都是使用JSONP去实现跨域,什么是JSONP?简单的来说就是JSON-Padding。

对很多新手来说JSONP并不是很理解,简单的说明下: 继续阅读“jquery中使用jsonp实现跨域访问”

wordpress之快速加载Google的ajax、fonts等资源

目的:

快速加载google 的fonts、ajax等资源

方法:

使用360提供的CDN加载Google资源,官网如下图,

屏幕快照 2015-01-22 下午6.16.40

屏幕快照 2015-01-22 下午6.16.58

【参考】:http://libs.useso.com

备注:可能有的代码中访问google的协议为https,但使用useso的资源时,要将协议改为http

附件:已更换使用useso资源的插件:revslider(version: 4.1.4)

ajax中不能使用return

问题:

写JS时,在A方法中需获取B方法的返回值,此返回值在B方法中是通过ajax得到的,然后在ajax的success回调函数中使用return 将结果返回给调用者A,但A始终收不到返回值,显示undefined。

 

原因:

在ajax的回调函数中不能使用return语句返回结果,原因不详(此结论由实际操作总结而来)。

解决方式:(错误的解决方式,详见下文)

在B 方法中,将ajax的success回调函数中得到结果保存至某变量中,然后在B方法的结尾,ajax操作外,将此变量使用return返回给调用者即可。

重要更新:

以上解决方式通过实践检验,又发现不妥之处:因为是ajax,不能保证及时响应,所以有可能存在B执行return语句时,ajax还没收到结果并将结果赋值给tmp临时变量。于是会出现刷新页面时(特别是第一次刷新),有时并无ajax结果显示出来,再次刷新后就可能正常了。

所以,

建议直接在ajax的回调函数中处理返回结果,不要将其return给某个用于处理显示结果的方法。在上面的例子中,即将A方法中的内容写在B方法中的ajax回调函数里。