1

我最近将我使用的 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
            });   
4

0 回答 0