我正在使用带有jQuery mobile的Phonegap开发Andriod应用程序。该应用程序将向服务器提交一些数据,并应等待服务器响应继续进行。一切正常,但页面会在收到回复之前立即返回。
这是示例服务器PHP程序。我发出了一个sleep命令来确保页面运行100秒。
$fp = fopen('data.txt', 'w');
for ($i=0; $i<100; $i++){
sleep(1);
fwrite($fp, 'testdata');
}
fclose($fp);
echo 'success';
AJAX页面提交脚本
$(document).bind('deviceready', function(){
$(function(){
$('form').submit(function(){
var postData = $(this).serialize();
$("#btn_login_submit",this).attr("disabled","disabled");
$.ajax({
type : 'POST',
url : 'http://website.org/phonegap/save.php',
data : postData,
beforeSend : function() {$.mobile.loading('show')},
complete : function() {$.mobile.loading('hide')},
success : function(response){
alert('Success');
},
error : function(){
alert('Sorry, unable to connect to server');
}
});
$("#btn_login_submit").removeAttr("disabled");
});
});
});
问题: 一旦我点击提交按钮,页面就会被提交并立即返回。 100秒后,我收到“成功”警告消息。我希望页面应该显示加载图像,直到PHP程序完成并返回结果。
任何帮助都将不胜感激。
答案 0 :(得分:0)
尝试在提交功能的末尾添加return false;
。这将阻止默认提交操作,您将不会立即得到响应。也不要使用async:false
,因为它会阻止ui,直到你得到响应并在jQuery 1.8 +中弃用。