Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax表单数据在页面重新加载之前传递_Javascript_Jquery_Ajax - Fatal编程技术网

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

Javascript ajax表单数据在页面重新加载之前传递,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用jQuery.get()请求来发送表单数据。但是页面通常会在我的JavaScript/jQuery代码捕获表单数据并将其发送到我需要的地方之前,重新加载/重定向过快。我使用alert()在用户单击alert上的ok时完成ajax请求。现在我需要表单像往常一样工作(使用PHP post和redirect),并在页面重新加载且无警报之前使用jQuery或JavaScript发送表单数据。有没有什么优雅的方法可以让页面等待直到jQuery完成请求(不使用警报)? UPD:我通过谷歌标签管理器的i

我使用
jQuery.get()
请求来发送表单数据。但是页面
通常会在我的
JavaScript/jQuery
代码捕获表单数据并将其发送到我需要的地方之前,重新加载/重定向
过快。我使用
alert()
在用户单击alert上的ok时完成ajax请求。现在我需要表单像往常一样工作
(使用PHP post和redirect)
,并在页面
重新加载且无警报之前使用jQuery或JavaScript
发送表单数据。有没有什么优雅的方法可以让页面等待
直到jQuery完成
请求
(不使用警报)?


UPD:我通过谷歌标签管理器的iframe嵌入jQuery代码。所以我不能改变表单的工作方式。而且我不应该阻止表单提交。

我会看一下[
完成
][它可能会做您希望它做的事情..完成()将等待整个ajax完成,然后运行您在“完成”中调用的任何函数。

您可以将回调绑定到do redirect并
返回false;
以防止默认重定向,如下所示:

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');
});
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
});

使用ajax发送数据,防止提交事件的默认行为。然后在ajax成功回调中,重定向/刷新当前页面或执行任何您想执行的操作。默认情况下,jquery ajax调用是异步的。这意味着,当您的ajax调用等待服务器响应时,其余脚本将正常执行。您需要设置asynchronous改为false(请阅读jquery手册上的$.ajax)@andrew(本例中为99%的案例),您不应该将ajax请求设置为sync@A.Wolff我知道。但在OP示例代码中,我发现他的问题在于表单提交。我认为在表单提交中这样做没有任何错误。除非我遗漏了一些明显的缺点?@andrew提交表单时,这是非常正确的,不应该是真的matter@chandu你的编辑改变了很多回答,可能OP没有使用支持
.on()的jQuery版本
method,顺便说一句,你没有在这里委派事件hi@A.Wolff,我只是在说最新的jquery lib。不是旧的。@chandu,但OP使用的是哪个jquery版本?这是我的观点;)我不能在jquery代码中重定向。我甚至不知道表单是如何工作的。我只是使用Google Tag Manager的iframe嵌入了一些代码
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
});