2011-07-27 37 views
5

Tôi sẽ chuối cố gắng tìm ra cách để serialize này (trong MVC 3):Làm thế nào để tuần tự hóa một mảng đối tượng jQuery cho JSON Post?

// 1. Tôi tải các mảng sản phẩm trong Xem:

var products = []; 
if (quantity > 0) {     
    products.push({ 'id': id, 'quantity': quantity }); 
} 

// 2. Sau đó, tôi Đăng một loạt các giá trị, cùng với các sản phẩm, như thế này:

$.ajax({ 
    type: "POST", 
    url: '/Orders/Create/', 
    data: 
    { 
     'ShipToPersonId': shipToPersonId, 
     'ShipToPersonType': selectedPersonType, 
     'ShippingAddressId': shipToAddressId, 
     'ShippingInstructions': 'Not yet implemented', 
     'LineItems': products, 
     'OrderOwnerId': selectedOnBehalfOfPersonId 
    }, 
    dataType: "json", 
    success: function (data) { 
     alert('Saved: ' + data); 
    }, 
    error: function (data) { 
     alert('failed:' + data); 
    } 
}); 

// 3. My điều khiển trông như thế này:

public JsonResult Create(
          int ShipToPersonId, 
          string ShipToPersonType, 
          int ShippingAddressId, 
          string ShippingInstructions, 
          List<LineItem> LineItems, 
          int OrderOwnerId) 
    {...} 

// 4. Lớp LineItem:

public class LineItem{ 
    public string id {get;set;} 
    public string quantity { get; set; } 
} 

Trong các chức năng điều khiển, tất cả các giá trị được truyền một cách chính xác, ngoại trừ danh sách LineItem; nó có số phần tử chính xác, tuy nhiên giá trị id và số lượng là null.

Tôi đã đặt cuộc gọi thông qua Fiddler, và đây là những gì tôi nhận được:

[Fiddler WebForms Xem]

================================= 
Body     | Value 
========================|======== 
LineItems[0][id]  | 50 
LineItems[0][quantity] | 10 
LineItems[1][id]  | 46 
LineItems[1][quantity] | 20 
LineItems[2][id]  | 48 
LineItems[2][quantity] | 30 
LineItems[3][id]  | 30 
LineItems[3][quantity] | 50 

[Fiddler QueryString Xem]

ShipToPersonId=533 
&ShipToPersonType=Rep 
&ShippingAddressId=517 
&ShippingInstructions=Not+yet+implemented 
&LineItems%5B0%5D%5Bid%5D=50&LineItems%5B0%5D%5Bquantity%5D=10 
&LineItems%5B1%5D%5Bid%5D=46&LineItems%5B1%5D%5Bquantity%5D=20 
&LineItems%5B2%5D%5Bid%5D=48&LineItems%5B2%5D%5Bquantity%5D=30 
&LineItems%5B3%5D%5Bid%5D=30&LineItems%5B3%5D%5Bquantity%5D=50 
&OrderOwnerId=533 

Rõ ràng, chuỗi tuần tự và tham số bộ điều khiển không phải là "tương thích". Tôi không định dạng đúng mảng sản phẩm trong chế độ xem hay danh sách Chi tiết đơn hàng và lớp trong bộ điều khiển không đúng hoặc cả hai?

Ai có thể làm sáng tỏ điều này không? Cảm ơn!

Có ai trong số này không?

Trả lời

0

Here là câu trả lời của bạn. Có vẻ như bạn cần phải sử dụng một thuộc tính trên đầu trang của hành động của bạn hoặc sử dụng một plugin mà serializes json của bạn vào một cái gì đó mô hình mặc định chất kết dính hiểu.

Ngoài ra, bạn đã thử JSON.stringify ({'foo', 'bar'}) trên đối tượng của mình khi bạn đặt làm dữ liệu trong yêu cầu ajax chưa?

Các vấn đề liên quan