在ASP.NET jQuery AJAX POST中传递值数组
我的页面上有一个ListBox,我想制作一个包含所有选定项目的AJAXpost。 这是我的代码:
$('#btnSubmit').click(function() { $.ajax({ type: "POST", url: 'Default.aspx/GetSelectedValues', data: '{selectedValues: }', contentType: "application/json; charset=utf-8", dataType: "json", success: OnSuccess }); }); One Two Three Four
我想将所选值传递为数组或逗号分隔的字符串。 传递数据的最佳方法是什么,我该怎么做?
要将其作为正确的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将自动处理类型转换。
如果它比这复杂得多,我建议使用JSON.stringify()来构建JSON,而不是手工完成 。 较新的浏览器本机实现,但你需要在旧浏览器中包含json2.js(并且它不会伤害任何东西以包含在较新的浏览器中;如果可用的话,它会延迟它们的本机function)。
表单标签中的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
。
以其他方式传递它。 a = 1&a = 2&a = 3您可以使用jQuery serialize() http://api.jquery.com/serialize/