2012-01-04 98 views
0

在asp.net mvc3應用程序中有一個表單。表單通過jquery發佈。以下是相關的代碼。ajax後觸發兩次

   $(this).find('form').live('submit', function() { 
        var request = $.post($(this).attr('action'), $(this).serialize(), function (data) { 
         //do something  
        }); 
        request.fail(function (jqXHR, textStatus) { 
         //do something  
        }); 
        return false; 
       }); 

現場()的使用,因爲形式是通過AJAX加載,我不想綁定的每個窗體通過AJAX檢索時間點擊事件。

問題是點擊提交原因表單將被髮布兩次。測試在鉻和IE9中,發生在他們兩個。

  • 我檢查頁面是否包含任何其他形式,但只有1個窗體。

  • 我禁用兩個瀏覽器的所有分機(螢火蟲可能會導致這樣)

  • 有沒有造成404(即圖像)頁面上的任何資源。

那麼還有什麼可能導致這個問題呢?

回答

0

很難說沒有html標記,也許你有兩個嵌套表單?

試着用event.stopPropagation或的preventDefault:

$(this).find('form').live('submit', function (e) { 
     e.stopPropagation(); 
     e.preventDefault(); 
     var request = $.post($(this).attr('action'), $(this).serialize(), function (data) { 
        }); 
     request.fail(function (jqXHR, textStatus) { 
         //do something  
     }); 
     return false; 
}); 
+0

kaz,我試過stopPropagation和preventDefault沒有運氣 – rovsen 2012-01-04 20:47:34

+0

那麼:$(this).find('form')。unbind('submit')。live('submit',(...) – kaz 2012-01-04 21:22:19

1

我懷疑你是比南的形式,或提交按鈕兩次。有一個bookmarklet稱爲視覺事件(不是我的)。如果是這種情況,請在檢查中運行。由於卡茲說,沒有實際的HTML沒有太多可以做

+1

它綁定你說過的兩倍。討厭的bug是好的預測:) – rovsen 2012-01-05 08:02:59

0

這是什麼對我來說。我有一個阿賈克斯形式,我得到的唯一工作是:

$('#docForm').ajaxForm({ 

    ...Do Some Mildly Cool Stuff Code... 

}).submit(function (e) { 
    return false; 
}); //Just add the submit to the end. 

而這一切都花了。

希望它有幫助!