1

我正在使用 jQueryMobile。我想发出一个 http 请求,但我不需要答案,因为我很清楚请求会成功。问题:请求以外部服务器为目标,因此我只能使用 JSONP。但是服务器不支持它,只返回纯文本或有效的 xml(我可以使用请求 url 更改它)。如何在不出错的情况下提出此请求?

在 ajax 中使用 jsonp 时,我收到错误,即存在语法错误。当仅将请求作为普通的 ajax/text/xml 请求发送时,根本不会联系服务器。我知道这一点,因为我正在联系短信网关并且没有收到短信。

我的解决方法目前正在插入一个新的 iframe,其中包含该 url 的 src 和显示样式:无;在 Firefox 中运行良好,但我怀疑这是(唯一的)解决方案。

你有什么解决方案?

4

1 回答 1

2

我认为您已经实施了最佳答案。让我们来看看约束:

  1. 这是对您无法控制的服务器的跨域请求,因此您不能使用各种 HTML5、Flash 或 Java API 来检查同源。

  2. 剩下的就是插入一些将加载远程资源的 DOM 元素。

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

  4. 同样,您不能使用<img>, <embed>, or <object>, 即使它们有效,这些也是邪恶的骇人听闻的选择。

<iframe>如果您想从浏览器发出请求,我认为这是唯一的选择。

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

于 2012-11-11T20:00:57.727 回答