0

我正在尝试接收我的多选框的选定值。通过 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端点。如果它以逗号分隔的字符串传递,我可以在服务器端对其进行排序。或者字符串数组更好。

4

4 回答 4

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);
    }

});
于 2013-12-05T15:14:50.487 回答
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

希望对你有帮助!

于 2013-09-24T09:28:46.530 回答
1

而不是在方法参数中使用string[](字符串数组)。使用string参数。并将这个逗号分隔的字符串转换为服务器端的数组。

使用以下代码,

服务器端,

    public ActionResult MultiSelect(string test)
    {
        return View();
    }

jQuery代码,

$.ajax({
                url: '@Url.Action("MultiSelect", "OrderCreation")',
                type: 'GET',
                cache: false,
                data: { test: $('#county').val().toString() },
                success: function (result) {
                    $('#myDiv').html(result);
                }
            });
于 2013-09-24T09:39:18.017 回答
1

我遇到了和你一样的问题。我在以下链接中找到了答案。

http://dovetailsoftware.com/clarify/kmiller/2010/02/24/jquery-1-4-breaks-asp-net-mvc-actions-with-array-parameters

基本上,您需要做的是添加以下行,这些值将作为数组传递。

jQuery.ajaxSettings.traditional = true;

于 2014-02-06T20:08:51.783 回答