2010-10-15 41 views
12

public ActionResult DoSomething(string[] arr, bool someBool, int someInt) { }Gửi mảng param với jQuery ajax/tải

cố gắng để gọi phương thức trên từ jQuery:

var test = []; 
test.push('dog'); 
test.push('cat'); 

$container.load('MyController/DoSomething', 
       { 'arr[]': test, 'someBool': true, 'someInt': 1 }, 
       function(response, status, xhr) { 
        // ... 
       }); 

paramater mảng là null, params khác cũng tốt. Tôi đang làm gì sai?

công cụ phát triển Chrome sẽ hiển thị dữ liệu mẫu được gửi như

arr%5B%5D%5B%5D:dog 
arr%5B%5D%5B%5D:cat 
someBool:true 
someInt:1 

không chắc chắn những gì đang diễn ra ở đó nhưng không nhìn bên phải với tôi

Trả lời

27

Nếu bạn đang sử dụng jquery 1.4 bạn có thể cần phải thiết lập các thông số traditional đến true để tương thích với định dạng trình kết nối mô hình mặc định trong ASP. NET MVC:

var test = []; 
test.push('dog'); 
test.push('cat'); 

$.ajax({ 
    url: 'MyController/DoSomething', 
    type: 'GET', 
    traditional: true, 
    data: { arr: test, someBool: true, someInt: 1 }, 
    success: function(result) { 
     $container.html(result); 
    } 
}); 

hoặc nếu bạn thích .load() phương pháp:

var data = { arr: test, someBool: true, someInt: 1 }; 
$container.load('MyController/DoSomething', $.param(data, true), 
    function(response, status, xhr) { 
    // ... 
}); 
+0

Đúng vậy. Tôi đã thực sự đi qua vấn đề này trước nhưng đã quên cho đến khi câu trả lời này chạy bộ nhớ của tôi. – fearofawhackplanet

+1

Cảm ơn ví dụ sử dụng 'tải' thay vì 'ajax'. –

+0

Vấn đề tương tự xảy ra với Java Struts2 và sửa lỗi này cũng tốt cho Struts2 –

1

Chỉ cần loại bỏ []

{ 'arr': test, 'someBool': true, 'someInt': 1 }, 

giá trị văn (kiểm tra bằng Firebug).

arr[]  dog 
arr[]  cat 
someBool true 
someInt  1 
+0

loại bỏ các dấu ngoặc không làm cho nó hoạt động , Tôi đã thử mà không có. Mặc dù lưu ý tài liệu jQuery đưa ra ví dụ với các dấu ngoặc, vì vậy tôi giả sử đó là cách chính xác: '$ (" # objectID "). Load (" test.php ", {'choices []': [" Jon "," Susan "]});' – fearofawhackplanet

0

Thậm chí tôi đã phải đối mặt với lỗi, trong qua mảng từ trang HTML để trang aspx.

yêu cầu của tôi là tải trang aspx trong thẻ DIV của trang html. trên trang tải tôi cần phải vượt qua các giá trị mảng JS để tải trang aspx.

tôi đã sử dụng phương pháp bên dưới.

$('#<divTagID>').load("Targetpage.aspx",{"Arr":JSArrValues});

Trong aspx kiện tải trang tôi có thể truy cập vào các giá trị này như:

string results = Response["Arr[]"];

Nhờ JQuery tài liệu API enter link description here và stackoverflow

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