ログインするために jquery を使用して ajax リクエストを行う uiWebview があります。これは、モバイル サファリおよびすべてのブラウザから完全に機能します。
インストール後に初めてアプリケーションを実行すると、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);
});
}