2012-11-11 21 views
1

我正在使用jQueryMobile。我想提出一个http请求,但我不需要这个答案,因为我几乎知道这个请求会结束。问题:请求的目标是外部服务器,因此我只能使用JSONP。但服务器不支持,只是返回纯文本或有效的XML(我可以改变与请求的网址)。 如何在不出错的情况下提出此请求?不使用答案的外部HTTP请求

在ajax中使用jsonp时,我收到错误,说明存在语法错误。 当仅以正常的ajax/text/xml请求发送请求时,服务器根本就没有联系。我知道这一点,因为我正在联系短信网关,并没有收到短信。

我的解决方法是当前插入一个新的iframe与src的URL和显示风格:none;在Firefox中正常工作,但我怀疑这是(唯一的)解决方案。

你有什么解决方案?

回答

2

我想你已经实现了最好的答案。让我们走过的约束:

  1. 这是一个跨域请求,你不控制的服务器,所以你不能使用检查同源的各种HTML5,Flash或Java的API的。

  2. 这留下插入一些DOM元素,将加载远程资源。

  3. 您已确定<script>不会这样做,因为内容类型错误。

  4. 同样,你不能使用<img>,<embed><object>,那些即使他们工作也是邪恶的黑客选择。

我认为是剩下的唯一选择,如果你想从浏览器发出请求。

您的另一种选择是在您自己的服务器上实现代理远程API的API。然后您可以使用XHR发出请求,并且您可以在客户端上进行完整的错误检查。

+1

谢谢你的回答。 iframes的事情是我担心它不会被所有浏览器隐藏,甚至没有加载。之后我做了一些调查,发现隐藏的iFrames是将恶意代码注入网站的常用技巧。我在iPad上使用Firefox和Safari Mobile对其进行了测试,并且均可正常工作。 iframe根本看不到,但明显加载。我从两个尝试中都收到了来自网关的短信。 – Zim84