微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery Mobile App +远程REST Web服务:JSONP的替代品?

如何解决jQuery Mobile App +远程REST Web服务:JSONP的替代品?

| 目前,我正在jQuery Mobile网站上工作,该网站随后将通过Titanium转换为应用程序。我创建了一个RESTful JSON Web服务,该服务在与jQuery Mobile应用程序不同的服务器上运行。使用JSONP通过AJAX使用Web服务。 我感到烦恼的一件事是,我无法使用HTTP错误代码,因为只要服务器发出错误,jQuery就会自动中止JSONP调用。我永远无法掌握客户端的错误代码。 另一件事是JSONP仅与HTTP动词GET一起使用,例如,您不能发出JSONP POST(当前,Web服务仅是GET,但可能会更改)。 JSONP是否有其他选择?还是将JSONP Web服务与AJAX结合使用时,JSONP是我唯一的选择吗?例如,Twitter应用程序如何与Twitter API(它们具有REST API)交互?     

解决方法

        您的问题很好地说明了为什么人们抱怨jquery太容易采用;) JSONP不是ajax。没有成功和失败回调。 JSONP是这样的: 将参数放在网址中 添加&jsoncallback = random2745273 创建一个全局变量
random2745273
,并将回调引用放入其中 将
<script src=\"theurlhere\"></script>
加到
head
那就是您所能做的。 服务器返回
random2745273({somedata});
这就是调用回调的方式。 如果要报告错误,则服务器必须生成正确的代码。您将不知道发送了哪些HTTP标头。 这是您与api进行跨域通信的唯一方法。 通过生成iframe也可以发送跨域通信,但是它很笨拙,很少使用。 [编辑] 好的,这让我开始思考...我可以使用iframe hack来封装JSONP! 和往常一样-我不是第一个想到这个主意的人(我终于谦虚地用谷歌搜索我的想法了;)) 它在这里:http://beebole.com/en/blog/general/sandbox-your-cross-domain-jsonp-to-improve-mashup-security/ 很棒 [edit2] 噢,我忘了...还有另一个。
window.postMessage
它已经在某些浏览器中实现。如果您不必与大多数浏览器兼容,则可以立即开始使用它! :)     ,        在对postMessage进行更多研究之后,我找到了JSONP的替代方法:通过EasyXDM通过跨域消息传递进行AJAX。 参见http://easyxdm.net/wp/2010/03/17/cross-domain-ajax/     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。