Jquery页面提交在完成之前立即返回

时间:2013-11-10 15:46:44

标签: android ajax cordova

我正在使用带有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程序完成并返回结果。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试在提交功能的末尾添加return false;。这将阻止默认提交操作,您将不会立即得到响应。也不要使用async:false,因为它会阻止ui,直到你得到响应并在jQuery 1.8 +中弃用。