我正在尝试接收多选框的选定值。通过Ajax调用。
以下是我的测试操作
public ActionResult MultiSelect(String[] test)
{
String[] arrayornot = test; //null being recieved. or the string if hardcoded
}
Jquery
alert($('#county').val()); // London, Brim
$.ajax({
url: '@Url.Action("MultiSelect", "APITest")',
type: 'GET',
cache: false,
data: { test: $('#county').val()},
success: function (result) {
$('#myDiv').html(result);
}
});
如果我将其硬编码为字符串,它可以正常工作。使用String[]
或String
端点。如果它传入一个逗号分隔的字符串,我可以在服务器端对它进行排序。或字符串数组更好。
答案 0 :(得分:2)
错误是$ Ajax配置设置方法传统:true然后你的问题就解决了。
var selectedItems = $('#county')。val();
$.ajax({
url: '@Url.Action("MultiSelect", "APITest")',
type: 'POST',
cache: false,
traditional: true,
data: { test: JSON.stringify(selectedItems)},
success: function (result) {
$('#myDiv').html(result);
}
});
答案 1 :(得分:1)
我会使用javascript数组并转换为JSON字符串
var selectedItems=$('#county').val(); // returns the array of selected items
然后使用JSON.stringify方法
$.ajax({
url: '@Url.Action("MultiSelect", "APITest")',
type: 'GET',
cache: false,
data: { test: JSON.stringify(selectedItems)},
success: function (result) {
$('#myDiv').html(result);
}
});
JSON.Stringify在IE 7中不可用。请使用JSON2.js
希望这会对你有帮助!
答案 2 :(得分:1)
而不是在方法参数中使用string[]
(字符串数组)。使用string
参数。并将此逗号分隔的字符串转换为服务器端的数组。
使用以下代码,
服务器端,
public ActionResult MultiSelect(string test)
{
return View();
}
JQuery Code,
$.ajax({
url: '@Url.Action("MultiSelect", "OrderCreation")',
type: 'GET',
cache: false,
data: { test: $('#county').val().toString() },
success: function (result) {
$('#myDiv').html(result);
}
});
答案 3 :(得分:1)
我遇到了同样的问题。我在以下链接中找到了答案。
基本上你需要做的是添加以下行,值将作为数组传递。
jQuery.ajaxSettings.traditional = true;