我们有一个 uiWebview,它使用 jquery 发出 ajax 请求以登录。它在移动 safari 和所有浏览器中都能完美运行。
安装后第一次运行应用程序时,ajax 请求似乎消失了,但没有收到任何响应,也没有触发 ajax 请求的失败或完成事件。
我们使用了这里找到的方法:UIWebViewDelegate not monitoring XMLHttpRequest?
监视请求以查看它们是否实际被发送并且它们似乎已发出但未收到任何响应。
如果我们然后退出应用程序,终止正在运行的进程,然后重新启动它,一切都会正常运行。什么可能阻止它在第一次运行时工作?
function makeLoginRequest(){
//alert('about to make login request');
var loginInfo='{"username":"'+$("#tbUserName").val()+'","password":"'+$("#tbPassword").val()+'"}';
jQuery.ajaxSetup({ 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript,application/javascript,text/html,application/json")} });
var loginRequest=$.ajax({
type:'POST',
url: 'http://ourURL.com/api/user/login.json',
data: loginInfo,
contentType: 'application/json',
dataType: 'json',
success: function(data){
var sessionID = data["sessid"];
var session_name= data["session_name"];
var userID=data.user["uid"];
redirectString ='ProfileView.htm?uid='+userID+'&sessionID='+sessionID+'&session_name='+session_name;
saveUsername();
$('window').attr('location', redirectString).delay(1000);
if(enableConsoleLogging)console.log("login attempt succeded.");
logDeviceData();
setTimeout(function (){window.location=redirectString;},0);
}
});
loginRequest.done(function (data) {
if(enableConsoleLogging){
//alert('login attempt complete.');
console.log("login attempt complete.");
console.log(data);
}
});
loginRequest.fail(function(data) {
if(enableConsoleLogging){
//alert("login attempt failed.");
console.log("login attempt failed.");
console.log("statusText: "+data.statusText);
console.log("responseText: "+data.responseText);
}
loginFailed(data);
});
}