2011-01-24 3 views
5

Khi tôi đang làm việc trên Ứng dụng Asp.Net MVC, trong đơn của tôi, tôi đang sử dụng phương thức jQuery.POST để gửi biểu mẫu.jQuery.POST - chuyển một tham số khác với Form.Serialize() - Asp.net MVC 3

ví dụ:

jQuery.post('/Product/Save', jQuery(document.forms[0]).serialize(), 
     function (data) { alert('Product Added Successfully.); } 
); 

Đoạn mã trên, tôi muốn chuyển một thông số khác .. giả sử .. ProductID.

Vì vậy, ý tưởng là, tôi muốn vượt qua cả jQuery(document.forms[0]).serialize()ProductID variable trong jQuery.POST method, vì vậy tôi có thể nhận được cả hai Form and ProductID trong controller's action method tôi.

Ai đó có thể cho tôi biết rằng tôi sẽ làm điều này?

Cảm ơn trước.

Trả lời

13

Bạn có thể sử dụng following plugin serialize các hình thức vào một đối tượng JSON và thêm một tham số:

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name]) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

như thế này:

var data = $('form').serializeObject(); 
data['ProductId'] = '123'; 
$.post('<%= Url.Action("Save", "Product") %>', data, function (data) { 
    alert('Product Added Successfully.'); 
}); 
0

Điều gì về việc sử dụng phương thức Url.Action để tạo URL gọi điện của bạn? Bạn có thể bao gồm dữ liệu bổ sung mà bạn cần theo cách đó.

<%: Url.Action('Save', 'Product', new { "ProductID", your product id }) %> 

Điều này sẽ thay thế URL được mã hóa cứng trong cuộc gọi phương thức jQuery.post của bạn.

0

Làm thế nào về:

var url = '<%= Html.BuildUrlFromExpression<MyController>(c => c.Save(":productId")) %>'; 

Bạn sau này có thể thay thế url bằng giá trị thực tế trong URL bài đăng của bạn.

url.replace(':productId', $productId);