JQTOUCH与phonegap

时间:2011-02-11 10:11:34

标签: javascript jquery iphone xcode

我使用jqtouch创建了一个应用程序。我用ajax将一些数据发送到服务器。 当我用phonegap或xcode将它编译成Ipad或iphone时。它能将数据发送到服务器吗?

我问这个是因为我不知道ajax是否可以在Iphone中使用跨域。

由于 问候

4 个答案:

答案 0 :(得分:2)

现在我测试了它iphone。它适合所有想要使用jqtouch或javascript jquery和html5创建iphone应用程序的人。

iphone中的XHR不遵循同源政策。

这意味着在iphone中我们可以创建跨域ajax请求

注意:仅当您使用 file:/// 协议而不使用 HTTP 协议

打开文件时,它才有效

答案 1 :(得分:1)

为此你必须创建本地Web服务器环境。

答案 2 :(得分:0)

以下是使用AJAX(下方)向服务器发送数据的示例。

将外部主机放在PhoneGap.plist或Cordova.plist中。

外部主机

  Item : *

只是*所以你可以访问任何http网站。

#############################

<form class="myformid" method="post" >

//form inputs
<input type="hidden" id="doSubmit" name="doSubmit" value="Submit">

<a href="#" class="submit whiteButton">Submit!</a>
</form>



$('#myformid').submit(function() {

var formdata = $("#myformid").serialize();

$.ajax({
  type: 'POST',
  url: http://mydomain.com/myphpfile.php,
  data: formdata,
  success: success,
  dataType: json,
});
})

答案 3 :(得分:0)

移动Safari

iPhone Mobile Safari遵循CORS语义。

说,您的网页托管在域www.example.com上,页面希望加载来自不同域或子域的数据,例如api.example.com使用ajax。

然后,必须设置api.example.com以发送正确的CORS标头: See, CORS topic in wikipedia

或者,您也可以使用JSONP作为常用解决方法。 JSONP的缺点是您的页面不会收到正确的HTTP错误代码。

<强>的PhoneGap

如果您在Phonegap中使用它,则需要在ExtenralHosts的{​​{1}}属性数组中添加主机名(支持通配符)。

包含本地网页的桌面

通常情况下,您希望在桌面浏览器上进行调试。

对于桌面,当且仅当页面位于本地(即Resources/Supporting Files/Cordova.plist)时,该行为取决于浏览器。默认情况下,Safari(在Mac和Windows上)允许本地页面对任何主机执行ajax。

但是,对于Chrome,它需要CORS标头,就像非本地情况一样。 CORS头必须包含file:///作为CORS ajax工作的可接受域。 JSONP也适用于Chrome。