在页面重新加载之前传递ajax表单数据

时间:2014-05-15 11:49:02

标签: javascript jquery ajax

我使用jQuery.get() 请求来发送表单数据。但是在我的reloads/redirects代码捕获并将表单数据发送到我需要的地方之前,页面JavaScript/jQuery通常太快了。我使用alert()来获取ajax请求,同时用户在警报上单击“确定”。现在我需要像往常一样(with PHP post and redirect)使用表单,并使用jQuery或JavaScript BEFORE页面reloads and NO alerts发送表单数据。是否有任何优雅的方式使页面等待until jQuery is done请求(without using alert)?

jQuery('#form').live('submit', function() {
    var inputValue = jQuery(this).find('#theInput').val();
    jQuery.get('http://someurl.com/order?var=' + inputValue);
    //alert('an unwanted alert');
});

UPD:我通过Google跟踪代码管理器的iframe嵌入了jQuery代码。所以我无法改变表单的工作方式。而且我不应该阻止表单提交。

3 个答案:

答案 0 :(得分:1)

jQuery('#form').live('submit', function(e){
    e.preventDefault(); // prevent default behaviour

    var inputValue = jQuery(this).find( '#theInput' ).val();
    jQuery.get('http://someurl.com/order?var=' + inputValue, function(){
          // redirect
    });
    //alert('an unwanted alert');
});

答案 1 :(得分:0)

我会看看[done] [http://api.jquery.com/deferred.done/],这可能会做你想做的事情。 .done()将等待整个ajax完成,然后运行你在完成内调用的任何函数。

答案 2 :(得分:0)

您可以绑定回调以执行重定向和return false;以防止默认重定向显示如下:

jQuery('#form').on('submit', function() {
    var inputValue = jQuery(this).find( '#theInput' ).val();
    jQuery.get('http://someurl.com/order?var=' + inputValue,
        function(data){
            //write redirect code here. In case if you want to check response, you can get it in data variable.
        });
    return false; //prevent default redirect action
});