我的页面上有一个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>
我想将所选值传递为数组或逗号分隔的字符串。传递数据的最佳方式是什么,我该怎么做?
答案 0 :(得分:2)
要将其作为正确的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()
如果你正在寻找快速'n脏,你可以采取这种方式并构建一个像这样的JSON数组字符串:
var json = '{ selectedValues: [' selectedValues.join(',') '] }';
将其传递到.NET JSON端点,该端点接受名为selectedValues
的数组/集合参数(区分大小写),应该可以完成您的工作。您可以将数组/集合指定为int或string类型,.NET将自动处理类型转换。
如果它变得更复杂,我建议using JSON.stringify() to build the JSON instead of doing it by hand。较新的浏览器本机实现,但是您需要在旧版浏览器中包含json2.js(并且在新版本中包含json2.js并不会造成任何损害;如果可用,它将遵循其原生功能)。
答案 1 :(得分:1)
表单标记内的select元素是什么?您可以序列化整个表单并轻松发送。
var formdata = $('#formId').serialize();
然后在你的ajax电话中
data: formdata,
-
最近我处理了一个非常类似的问题。我也在使用C#Web服务,但我正在处理的数据是完全动态的。我必须找到一种方法来收集可变长度数组并将其作为单个JSON字符串(以及一些其他固定变量)传递。我使用了http://json.org中的JSON2库,通过在所有需要的输入字段上放置某个类,并使用title属性作为键来收集数据。
var formdata = {};
$(".formInputField").each(function() {
formdata[$(this).attr('title')] = $(this).val();
});
var mydata = JSON.stringify({ 'formdata': JSON.stringify(formdata), 'othervar' : otherVal1, 'othervar2' : otherVal2, 'othervar3' : otherVal3 });
然后我按照上面的mydata
通过了。
答案 2 :(得分:0)
以其他方式传递。 α= 1和; A = 2及A = 3 您可以使用jQuery serialize()http://api.jquery.com/serialize/