2014-01-10 82 views
1

我正在使用codeiniter框架。我想通過ajax coll在數據庫中提交表單數據,並在成功提交表單過程之後,我想通過其他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的

<div id="com_display"></div> 
<form id="form1" name="form1"> 
<input type='hidden' id='id' name='id' /> 
<input type='text' id='comment_text' name='comment_text' /> 
</form> 

當我在評論框,然後按III型輸入按鈕,然後數據兩次將數據庫提交。

請給我任何解決方案來解決它。

+0

只是一個小評論,爲什麼不ü使first_req.php調用sencond_req.php當它完成,這樣你們會節省兩個請求給用戶。 – MJoraid

+1

@Mohammed Joraid,我不明白你的問題( \t 爲什麼PHP是與此有關?) – cbnvbxcbvnbxcbv

+0

哦對不起。所有我的意思是,爲什麼PHP被添加爲問題標籤,而與問題無關。看起來,您的問題僅涉及HTML和JQuery。 – MJoraid

回答

0

即使您正在使用Ajax請求提交的數據,你是不是停止形式的默認操作提交。

您可以撥打event.preventDefault()來執行此操作。

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

}); 

,或者如果你想阻止默認和行動,並停止提交事件

0

可能重複的thisthisthis

在文檔READ HERE冒泡從事件處理程序return false

(綁定事件處理程序「提交」的JavaScriptê發泄,或者觸發元素上的事件。)

換句話說,當你點擊進入,你會觸發默認提交表單的,還您jQuery將提交表單。

解決方案:

  1. 防止加入e.preventDefault();默認行爲。閱讀 - >jQuery AJAX Form Submit Example

    $('#form1').submit(function (e) {   
        e.preventDefault(); 
        //the rest of code. 
    
  2. 刪除默認的行爲

    $('form').submit(function(){ 
        $(this).find(':submit').attr('disabled','disabled'); 
    }); 
    

3。只有提交直通jQuery的表單時,實際上提交(不重新提交)

$(document).on("submit", "form.form1", function(event){ 
    alert(1); 
});