Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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_Codeigniter_Jquery - Fatal编程技术网

Php 为什么要通过ajax提交两次数据?

Php 为什么要通过ajax提交两次数据?,php,ajax,codeigniter,jquery,Php,Ajax,Codeigniter,Jquery,我正在使用codeiniter框架。我想通过ajaxcoll提交数据库中的表单数据,在成功提交表单过程后,我想通过其他ajax请求刷新特定的div 但当我按下提交表单的回车键时,数据被提交了两次。我想通过ajax提交数据一次,按enter键 我的代码像- $('#form1').submit(function () { var id = $('#id').val(); var comment_text = $('#comment_text').val(); $.ajax({ data: {'

我正在使用codeiniter框架。我想通过ajaxcoll提交数据库中的表单数据,在成功提交表单过程后,我想通过其他ajax请求刷新特定的div

但当我按下提交表单的回车键时,数据被提交了两次。我想通过ajax提交数据一次,按enter键

我的代码像-

$('#form1').submit(function () {
var id = $('#id').val();
var comment_text = $('#comment_text').val();
$.ajax({
  data: {'id' :id,'comment_text':comment_text},
  type: "POST",
  url: "first_req.php",
  dataType : "json"
  success: function(data){
    if(data.status =="Success")
     {
    $.ajax({
      data: {'id':id},
      type: 'GET',
      url: 'sencond_req.php',
      contentType : "application/x-www-form-urlencoded; charset=UTF-8",
      success: function (data) {
        $('#com_display').html(data);
      }            
    });
     }
     }
    });
  return false;
      });
HTML-


当我在评论框中输入hi并按下enter按钮时,数据将在数据库中提交两次


请给我任何解决方案。

即使您使用ajax请求提交数据,也不会停止表单提交的默认操作

你可以打电话给警察来做这件事

$('#form1').submit(function (e) {
    //prevent the default form submission
    e.preventDefault();
    var id = $('#id').val();
    var comment_text = $('#comment_text').val();
    $.ajax({
        data: {
            'id': id,
            'comment_text': comment_text
        },
        type: "POST",
        url: "first_req.php",
        dataType: "json"
        success: function (data) {
            if (data.status == "Success") {
                $.ajax({
                    data: {
                        'id': id
                    },
                    type: 'GET',
                    url: 'sencond_req.php',
                    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                    success: function (data) {
                        $('#com_display').html(data);
                    }
                });
            }
        }
    });

});
或者,如果要防止默认值和操作并停止提交事件的冒泡,请从事件处理程序返回false,以及

在文件中

(将事件处理程序绑定到“提交”JavaScript事件,或在元素上触发该事件。)

换句话说,当您单击enter时,您将触发表单的默认提交,并且您的jquery将提交表单

解决方案:

  • 通过添加
    e.preventDefault()防止默认行为。阅读->

  • 删除默认行为

  • 3.仅在表单实际提交时通过jquery提交表单(无需重新提交)


    只是一个小小的评论,为什么不在完成后先调用sencond_req.php调用sencond_req.php,这样就可以将两个请求保存给用户。@Mohammed Joraid,我无法理解你的问题(为什么php与此相关?)哦,很抱歉。我的意思是,为什么php被添加为问号,而它与问题无关。看起来,您的问题只与HTML和JQuery.btw有关,下面有两个答案。请选择为您提供解决方案的答案,如果答案不正确,请留下评论,让答案作者知道他的答案不准确。谢谢
    $('#form1').submit(function (e) {
        //prevent the default form submission
        e.preventDefault();
        var id = $('#id').val();
        var comment_text = $('#comment_text').val();
        $.ajax({
            data: {
                'id': id,
                'comment_text': comment_text
            },
            type: "POST",
            url: "first_req.php",
            dataType: "json"
            success: function (data) {
                if (data.status == "Success") {
                    $.ajax({
                        data: {
                            'id': id
                        },
                        type: 'GET',
                        url: 'sencond_req.php',
                        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                        success: function (data) {
                            $('#com_display').html(data);
                        }
                    });
                }
            }
        });
    
    });
    
    $('#form1').submit(function (e) {        
        e.preventDefault();
        //the rest of code.
    
    $('form').submit(function(){
      $(this).find(':submit').attr('disabled','disabled');
    });
    
    $(document).on("submit", "form.form1", function(event){
        alert(1);
    });