小编典典

在ASP.NET jQuery AJAX POST中传递值数组

ajax

我的页面上有一个ListBox,我想发表一个包含所有选定项目的AJAX帖子。这是我的代码:

$('#btnSubmit').click(function() {
    $.ajax({
        type: "POST",
        url: 'Default.aspx/GetSelectedValues',
        data: '{selectedValues: }',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess
    });
});

<select id="lbItems" multiple="multiple">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
</select>

我想以数组或逗号分隔的字符串形式传递选定的值。传递数据的最佳方法是什么,我该怎么做?


阅读 558

收藏
2020-07-26

共1个答案

小编典典

要将其作为正确的JSON传递,您要寻找的最终结果是:

// Assuming 1, 2, and 4 are selected.
{ selectedValues: ['1', '2', '4'] }

无论您进行序列化,第一步都是将所选值作为数组拉出。jQuery的.val()使此操作比您预期的要容易:

// Returns an array of #lbItems' selected values.
var selectedValues = $('#lbItems').val()

如果您正在寻找快速的’ndirty’,那么您可以采用这种方法并构建一个JSON数组字符串,如下所示:

var json = '{ selectedValues: [' selectedValues.join(',') '] }';

将其传递到接受名为selectedValues(区分大小写)数组/集合参数的.NET
JSON终结点中,应该可以完成您的工作。您可以将数组/集合指定为int类型或字符串类型,.NET将自动处理类型转换。

如果它变得比这更复杂,我建议使用JSON.stringify()来构建JSON,而不要手动进行。较新的浏览器是本机实现的,但是您需要在较旧的浏览器中包含json2.js(在较新的浏览器中包含json2.js并没有什么害处;如果可用,它会遵循其本机功能)。

2020-07-26