我的页面上有一个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>
我想以数组或逗号分隔的字符串形式传递选定的值。传递数据的最佳方法是什么,我该怎么做?
要将其作为正确的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将自动处理类型转换。
selectedValues
如果它变得比这更复杂,我建议使用JSON.stringify()来构建JSON,而不要手动进行。较新的浏览器是本机实现的,但是您需要在较旧的浏览器中包含json2.js(在较新的浏览器中包含json2.js并没有什么害处;如果可用,它会遵循其本机功能)。