我最近将我使用的 PhoneGap 版本从 0.9.5 更新到了 Cordova-1.7.0。自从升级以来,我不再能够通过来自 Android 设备的 Ajax 调用将数据发布到我的服务器,尽管它在浏览器中运行良好。
返回的 jqXHR 状态代码为 0 - 表示网络处理存在问题,但我能够从服务器检索数据而没有任何问题。
在 0.9.5 和 1.7.0 之间将数据发布到服务器的方式是否发生了变化?
我的ajax调用如下:
$.ajax({
type: "POST",
url: "https://"+serverUrl + "process.php",
data: {data:passData, key:appKey},
crossDomain: true,
cache: false,
dataType: "text",
timeout: 5000,
success: onSuccess,
error: onError
});
function onError(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
showAlert("Failed to transmit, saved for re-transmital.", "Alert", 1);
}
function onSuccess(data){
alert('successfully transmitted');
}
更新 在我的通话中添加了“async:false”并且它有效。请参阅下面的更新代码:
$.ajax({
type: "POST",
url: "https://"+serverUrl + "process.php",
data: {data:passData, key:appKey},
crossDomain: true,
cache: false,
async: false,
dataType: "text",
timeout: 5000,
success: onSuccess,
error: onError
});