这是一个非常奇怪的问题,但我会提供尽可能详细的信息。此Javascript函数位于单独的.js文件中,并引用到Cordova应用程序中的各种HTML页面。当一个具有2个参数:id,type的推送通知被接收到设备中时,执行一个名为LaunchFromNotif的函数,并将这两个参数作为参数传递。
function LaunchFromNotif(id, type) {
try {
var ebyidurl = url + "ReturnEByID";
var nbyidurl = url + "ReturnNByID";
if (type != null) {
if (type == "n") {
$.ajax({
type: 'GET',
url: nbyidurl,
data: { id: id },
dataType: 'json',
processdata: true,
success: function (data) {
//code here
},
error: function (xhr, status, error) {
alert('Error: ' + error);
}
});
} else if (type == "e") {
$.ajax({
type: 'GET',
url: ebyidurl,
data: { id: id },
dataType: 'json',
processdata: true,
success: function (data) {
//code
},
error: function (xhr, status, error) {
alert('Error: ' + error);
}
});
} else if (type == "a") {
combined(id);
}
}
} catch (exception) {
//window.location = "Warning2.html";
}
}
Combined(id)是具有2个Ajax调用的另一个函数。我一次又一次地使用,以确保第一个ajax调用在开始第二个之前完成。
function combined(id) {
alert("combined");
$.when(
$.ajax({
type: 'GET',
url: nbyidurl,
data: { id: id },
dataType: 'json',
processdata: true,
success: function (data) {
alert("success of first ajax");
},
error: function (xhr, status, error) {
alert('Error 1: ' + error);
}
})
).then(function () {
$.ajax({
type: 'GET',
url: Verifytempurl,
data: { Username: localStorage.getItem('user') },
success: function (data) {
alert("success of second ajax");
},
error: function (xhr, status, error) {
alert('Error 2: ' + error);
}
});
});
问题是这只适用于一个HTML页面。在我尝试的其他3个页面中,它显示了“组合”警报,似乎永远不会访问Ajax调用。逻辑似乎有意义,特别是因为它在一个页面中处于正常工作状态。某些东西通常会出现什么问题?我只有很少的调试可能性,特别是因为这是一个Cordova应用程序并在移动设备上进行测试。
提前致谢!