Try:
$.ajax({
url: '/Controller/ActionName',
data: { items: JSON.stringify(list) }
});
I've tried the following options:
<script type="text/javascript">
var list = [
{ id: 1, name: 'Charles' },
{ id: 8, name: 'John' },
{ id: 13, name: 'Sally' }
];
function run(){
$.ajax({
url: 'default.aspx',
data: { items: JSON.stringify(list) }
});
return false;
}
function run2() {
$.ajax({
url: 'default.aspx',
data: { items: list }
});
return false;
}
function run3() {
$.ajax({
url: 'default.aspx',
data: { items: list },
processData: false
});
return false;
}
function run4() {
$.ajax({
url: 'default.aspx',
data: list
});
return false;
}
</script>
Run 1: default.aspx?items=%5B%7B%22id%22%3A1%2C%22name%22%3A%22Charles%22%7D%2C%7B%22id%22%3A8%2C%22name%22%3A%22John%22%7D%2C%7B%22id%22%3A13%2C%22name%22%3A%22Sally%22%7D%5D
Querystring["items"] = '[{"id":1,"name":"Charles"},{"id":8,"name":"John"},{"id":13,"name":"Sally"}]'
Run 2: default.aspx?items%5B0%5D%5Bid%5D=1&items%5B0%5D%5Bname%5D=Charles&items%5B1%5D%5Bid%5D=8&items%5B1%5D%5Bname%5D=John&items%5B2%5D%5Bid%5D=13&items%5B2%5D%5Bname%5D=Sally
items[0][id] 1
items[0][name] Charles
items[1][id] 8
items[1][name] John
items[2][id] 13
items[2][name] Sally
Run 3: default.aspx?[object%20Object]
[object Object]
Run 4: default.aspx?Charles=undefined&John=undefined&Sally=undefined
Request["Charles"] = 'undefined'
Request["John"] = 'undefined'
Request["Sally"] = 'undefined'
Now from the OP, I think Run 1 is the required option as he wants to process the JSON string on the server side?