Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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
Php 在默认表单操作之后运行ajax?_Php_Ajax - Fatal编程技术网

Php 在默认表单操作之后运行ajax?

Php 在默认表单操作之后运行ajax?,php,ajax,Php,Ajax,我使用以下代码使用AJAX运行PHP文件。它工作得很好,而且应该如此 但是,AJAX代码所在的表单有一个默认操作。例如 我的AJAX代码如下: <script> $('#select').change(function(){ var selectedValue = $(this).val(); if (selectedValue === 'Yes') { $(

我使用以下代码使用AJAX运行PHP文件。它工作得很好,而且应该如此

但是,AJAX代码所在的表单有一个
默认操作
。例如

我的AJAX代码如下:

             <script>
        $('#select').change(function(){
            var selectedValue = $(this).val();
            if (selectedValue === 'Yes') {
                  $(function(){
      $('form').submit(function(e){
        var thisForm = $(this);
        //Prevent the default form action
        e.preventDefault();
            //Post the form to the send script
            $.ajax({
              type: 'POST',
              url: 'mySecond.php',
              data: thisForm.serialize(),
              //Wait for a successful response
        });
      })
    });
            } else {

            }
        });
</script>

$('#select')。更改(函数(){
var selectedValue=$(this.val();
如果(selectedValue==“是”){
$(函数(){
$('form')。提交(函数(e){
var thisForm=$(本);
//阻止默认窗体操作
e、 预防默认值();
//将表单发布到发送脚本
$.ajax({
键入:“POST”,
url:'mySecond.php',
数据:thisForm.serialize(),
//等待成功的响应
});
})
});
}否则{
}
});
我知道
e.preventDefault()
意味着它将摆脱默认的表单操作,并且只执行AJAX调用

那么,有没有办法同时执行
AJAX
默认表单操作
?或者,一个接一个

另外,我确实删除了
e.preventDefault()它将停止AJAX调用的工作

任何帮助都将不胜感激

谢谢,不是这样的

如果不将响应表单提交的页面设置为在加载时发出Ajax请求,则无法执行默认表单操作,然后执行Ajax

您不能执行Ajax请求,然后允许默认表单提交继续,因为Ajax是异步的,所以在触发表单提交之前它不会完成

您可以取消默认表单操作,执行Ajax请求,然后(在Ajax请求的响应处理程序中)以编程方式提交表单(通过调用其
submit()
方法)


您最好将普通表单提交作为一个请求来执行这两项任务,而不必使用Ajax。

我不知道您为什么要这样做,但有一种方法:

 <script>
    var continue = true;
    $('#select').change(function(){
        var selectedValue = $(this).val();
        if (selectedValue === 'Yes') {
              $(function(){
                 $('form').submit(function(e){
                     var thisForm = $(this);
                     //Prevent the default form action
                    if(continue){
                        e.preventDefault();

                        //Post the form to the send script
                        $.ajax({
                             type: 'POST',
                             url: 'mySecond.php',
                             data: thisForm.serialize(),
                            //Wait for a successful response
                            success: function(data){
                                   continue = false;    
                                   $(thisForm).submit();
                            }
                        });
                    }
                })
            });
      } else {

      }
  });
</script>

var continue=true;
$('#select')。更改(函数(){
var selectedValue=$(this.val();
如果(selectedValue==“是”){
$(函数(){
$('form')。提交(函数(e){
var thisForm=$(本);
//阻止默认窗体操作
如果(继续){
e、 预防默认值();
//将表单发布到发送脚本
$.ajax({
键入:“POST”,
url:'mySecond.php',
数据:thisForm.serialize(),
//等待成功的响应
成功:功能(数据){
continue=false;
$(此表单)。提交();
}
});
}
})
});
}否则{
}
});

试试下面的方法。在done回调中执行ajax调用

     <button id="btnSave" type="submit" formaction="Save">Save</button>         
    $('#btnSave').click(function (e) {
 var thisForm = $(this).closest( form ).serialize();
                $.ajax({  
                    url: '#',
                    type: 'GET',
                    cache: false
                }).done(function(result) {
                        CallMySecond(thisForm );           
                });              

        }); 
function CallMySecond(data){
 $.ajax({
              type: 'POST',
              url: 'mySecond.php',
              data: thisForm.serialize()
});
}
保存
$('#btnSave')。单击(函数(e){
var thisForm=$(this).closest(form).serialize();
$.ajax({
url:“#”,
键入:“GET”,
缓存:false
}).完成(功能(结果){
CallMySecond(这种形式);
});              
}); 
函数CallMySecond(数据){
$.ajax({
键入:“POST”,
url:'mySecond.php',
数据:thisForm.serialize()
});
}

您不能同时执行AJAX和
默认表单操作
,因为
默认表单操作
将重新加载当前页面(或重定向到另一个页面)。有机会举个例子吗?
ref\u to\u form.submit()
!那去哪了?这意味着什么?这意味着什么?“在Ajax请求的响应处理程序中”这意味着什么?这意味着“提交此表单”我没有标记和完整的代码,但它在哪一行表示语法错误?可能会很快到达:)第一行<代码>var continue=true