所以我正在使用Phone Gap 和jQuery mobile 构建一个应用程序。
当使用 ajax 从白名单服务器获取 json 响应时,我收到错误响应。但是,控制台中没有显示任何内容。奇怪的是,当在网络浏览器中测试应用程序时它工作正常,只有当我启动到我的 iPhone 设备时,它才会抛出一个 strop。
现在值得一提的是,我托管我的 php 脚本的站点在 Phone Gap 中被列入白名单。我在数组中使用 * (以防万一这会有所不同)。我已经为此制定了一个 jsonp 解决方法,但不想使用它 - 我觉得如果它在浏览器中工作,它必须在设备上是可能的。我希望这是一个简单的修复...
这是我的简单 php 脚本,它只是回显一个 json 字符串。
<?php
header('Access-Control-Allow-Origin: *');
$arr = array('a' => 1, 'b' => 2);
echo json_encode($arr);
?>
这是JS
$('#registerUser').submit(function() {
$.ajax({
url: 'http://www.mydomain.co.uk/path/register/add_user.php',
type: 'post',
dataType: 'json',
crossDomain : true,
timeout: 5000,
success: function(msg){
alert(msg.a);
},
error: function(){
alert('There was an error loading the data.');
}
});
});
});
编辑:我在页面上也有这个 js...在 jquery mobile docs 上建议在使用 Phone Gap 时使用它
<script>
$( document ).on( "mobileinit", function() {
$.mobile.allowCrossDomainPages = true;
$.support.cors = true;
});
</script>
还有表格 - 我认为这没有必要......
<form id='registerUser' action="" method="POST">
<div data-role="fieldcontain">
<label for="name">Name:</label>
<input type="text" name="name" id="name" value="" />
<label for="name">Email:</label>
<input type="text" name="email" id="email" value="" />
<label for="name">Password:</label>
<input type="password" name="password1" id="password1" value="" />
<label for="name">Re-enter password:</label>
<input type="password" name="password2" id="password2" value="" />
<br>
<button type="submit" aria-disabled="false">Submit</button>
</div>
</form>
我在这里先向您的帮助表示感谢!