2011-10-11 94 views
2

我使用MVC 3 jQuery對話框n $ .ajax。jQuery對話框+ ajax - 在第二次提交時表單數據重複,奇怪的行爲?

我得到1查看(Index.cshtml)與 「生成鍵」 和如下腳本:

的getShopListFood是一個簡單的控制器動作返回的部分視圖:

// Function to generate shopListFood items based on shopListID 
    public ActionResult GetShopListFood(int shopListID) 
    { 
     var shopListFood = (from f in dbEntities.SHOPLISTFOODs where f.ShopListID == shopListID select f).ToList(); 
     return PartialView("_ShopList", shopListFood); 
    } 

然後在局部視圖中,我創建一個對話框來加載另一個局部視圖,它是創建一個新數據庫實例的表單: var $ createdialog = $('')。load('/ Shop/GetShopListFoodForm')。dialog ({0}title:'Add New Item', modal:true });

$createdialog.dialog("option", "buttons", { 
     "Cancel": function() { 
      $createdialog.dialog('close'); 

     }, 
     "Submit": function() { 

      var frm = $('#formData'); 
      $.ajax({ 
       async: false, 
       url: '/Shop/AddItem', 
       type: 'POST', 
       data: frm.serialize(), 
       success: function (result) { 
        $('.shoplistfood').html(result); 
        $createdialog.dialog('close'); 
       } 
      }); 

     } 
    }); 

    $('#additem').button().click(function() { 
     // Once clicked, create a dialog to load _ShopListFoodForm dialog 
     //clear(); 
     $createdialog.dialog('open'); 

    }); 

但是,我得到一個非常奇怪的情況。第二個創建只會將數據複製爲第一個。例如,我創建ADD1並提交,更新shoplist,然後我在表單對話框中輸入ADD2並提交,我得到另一個ADD1 POST,而不是ADD2。

我一直在我的應用程序中的許多其他模塊使用一些方法,但從來沒有遇到過這樣的問題。我只是不知道發生了什麼問題!

希望我自己清楚這個問題,並且可以在這裏得到一些幫助...

非常感謝..............

回答

1

我莫名其妙通過改變流程來「解決」它。我把ShopList變成一個視圖,每次用戶添加項目/刪除項目,我會用另一個_ShopList局部視圖刷新div。

$createdialog.dialog("option", "buttons", { 
     "Cancel": function() { 

      $createdialog.dialog('close'); 

     }, 
     "Submit": function() { 

      var frm = $('#shopform'); 
      $.ajax({ 
       url: '/Shop/AddItem', 
       type: 'POST', 
       data: frm.serialize(), 
       success: function (result) { 
        $('#shopfoods').html(result); 
        $createdialog.dialog('close'); 
       } 
      }); 

     } 
    }); 

這是有效的,雖然我不太清楚爲什麼。只是分享我的方式,並希望得到一些反饋在這裏...謝謝!

0

我有同樣的問題,經過幾次試驗和錯誤,我意識到罪魁禍首是jQuery UI對話框聲明。對話對象在部分視圖中被聲明爲全局變量,在成功提交表單後重新加載。重新加載的部分視圖會再次聲明相同的全局變量,因此會造成混亂:您確實再次提交原始對象 - 仍在範圍內。

我知道我已經晚了幾年,但這對未來有同樣問題的人可能會有用。

相關問題