我最近更新了我使用的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
});