我使用jqtouch创建了一个应用程序。我用ajax将一些数据发送到服务器。 当我用phonegap或xcode将它编译成Ipad或iphone时。它能将数据发送到服务器吗?
我问这个是因为我不知道ajax是否可以在Iphone中使用跨域。
由于 问候
答案 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。