2011-09-01 51 views
1

我有一些問題發佈多個參數到我的控制器使用AJAX。這兩個參數都爲空,並且無法找出原因。我試圖從兩個名爲「cat_fam_codes」和「cat_codes」的下拉列表中發送選定的值MVC3 JQuery AJAX ||多個傳遞的參數爲空

更新:我已經添加了下面列出的內容類型和數據類型。同樣的問題:傳遞給控制器​​的兩個參數都是空的。

在視圖:

$('#cat_fam_codes').click(function() { 
     var categoryData = { 
      categoryFamilyCodes: $('#cat_fam_codes').val(), 
      categoryCodes: $('#cat_codes').val() 
     }; 

     $.ajax({ 
      type: 'POST', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      url: '/EventReport/GetCCRCodes/', 
      data: JSON.stringify(categoryData), 
      success: function (jsonresults) { 
       if (jsonresults != null) { 
        $('#ccr_codes').find('option').remove().end(); 
        for (var i = 0; i < jsonresults.length; i++) { 
         $('#ccr_codes').append('<option value="' + jsonresults[i].CCRCodeId + '">' + jsonresults[i].Description + '</option>'); 
        } 
       } 
      }, 
      error: function (xhr, status, error) { 
       alert('Failed to retrieve CCR Codes for this list. A "' + error + '" response was returned.'); 
      } 
     }); 

    }); 

在控制器:

[HttpPost] 
public ActionResult GetCCRCodes(string categoryFamilyCodes, string categoryCodes) 
{ ... } 

被傳遞到所述控制器的零的參數的兩個。任何協助將不勝感激。

謝謝!

回答

2

檢查使用Fiddler或類似工具的是什麼通過你的$。阿賈克斯()調用返回到控制器。 $ .ajax可能不會以JsonValueProviderFactory可反序列化的形式發送數據。當我通過$就張貼JSON,我總是明確指定下列選項:

contentType: "application/json; charset=utf-8", 
dataType: "json", 
+0

我已經更新的日期和內容類型。提琴手顯示-1和空白內容類型的「主體」。 –

+0

Woops。我忘了我還添加了一個其他選項:'context:document.body,'請試試看。 – counsellorben

2

我會採取更簡單的方法。假設你有HTML表單內的DropDownLists

$.post("/EventReport/GetCCRCodes/", $("form").serialize());