2014-03-13 102 views
0

這是AJAX調用:通過Ajax傳遞多個值的MVC控制器

 var selectedProductOptions = new Array(); 

    $(".optionSelectionBox").each(function() { 
     selectedProductOptions.push($(this).val()); 
    }); 

$.ajax({ 
     url: "/Cart/AddItem", 
     type: 'post', 

     data: JSON.stringify({ 
      productId : @Html.ValueFor(m => m.Product.Id), 
      selectedOptions : selectedProductOptions, 
     }), 
     success: function (data) { 
      if (data.IsSuccess) { 
       alert("test Hello Success"); 
      } 

      alert("test HELLO Fail"); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert(errorThrown + "- Error"); 
     } 
    }); 

這是控制器,該控制器reciveing呼叫。

[HttpPost] 
    public JsonResult AddItem(string productId, List<string> selectedOptions) 
    { 
    //Code here   
    } 

當我設置它被擊中的作用休息點,這是我想要的,但..... productId參數和selectedOptions都是NULL。

我在做什麼錯?

+0

什麼數據存儲在'selectedProductOptions'中?你能給個例子嗎? –

+0

selectedProductOptions:數組[4] 0: 「4」 1: 「1」 2: 「7」 3: 「10」 <<那從鉻開發人員工具 –

回答

0

確定其現在的工作.... :-)

這是我的解決方案,浩它會幫助別人。

這是控制器操作:

[HttpPost] 
    public JsonResult AddItem(string formData) 
    { 

    var js = new JavaScriptSerializer(); 
    AddItemModel addItemModel = js.Deserialize<AddItemModel>(formData); 


    //Other Code here 

     return new JsonResult(); 
    } 

    public class AddItemModel 
    { 
     public List<string> selectedOptions { get; set; } 
     public string productId { get; set; } 
    } 

這是Ajax調用:

$.ajax({ 
     url: "/Cart/AddItem", 
     type: 'post', 

     data: "formData=" + JSON.stringify(cartItem), 
     success: function (data) { 
      if (data.IsSuccess) { 
       alert("test Hello Success"); 
      } 

      alert("test HELLO Fail"); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert(errorThrown + "- Error"); 
     } 
    }); 

似乎有很多不同的方式在做這個,我得到這個工作的這段時間,但我仍然不知道爲什麼第一種方式不起作用,會愛一些真正理解這一點的人解釋爲什麼它不起作用,以及發生了什麼。

謝謝大家......繼續下一個。

1

selectedOptions : selectedProductOptions,

data: JSON.stringify({ 
     productId : @Html.ValueFor(m => m.Product.Id), 
     selectedOptions : selectedProductOptions 
    }), 

刪除,編輯

嘗試用這種過於

data: { 
productId: @Html.ValueFor(m = > m.Product.Id), 
selectedOptions: JSON.stringify(selectedProductOptions) 
}, 
+0

只是去嘗試...仍然對象沒有Joy ... both productId和selectedOptions仍然爲空 –

+0

我也嘗試將selectedOptions更改爲列表以查看是否有幫助.. No Joy –

1

您也可以讓這樣的事情:

創建新類:

public class AddItemModel 
    { 
     public List<string> selectedOptions { get; set; } 
     public string productId { get; set; } 
    } 

和修改代碼:

public JsonResult AddItem(AddItemModel aim) 

和Ajax調用:

data: JSON.stringify({ 
        aim: { 
         productId : @Html.ValueFor(m => m.Product.Id), 
         selectedOptions : selectedProductOptions       
        } 

這也應該工作

+0

嘗試了這一點以及..擊中斷點但設置了對象目標,但selectedProductOptions和productId仍然爲空... *嘆*我想在這裏需要JS序列化程序.... –

相關問題