在 ASP.NET jQuery AJAX POST 中传递值数组
Posted
技术标签:
【中文标题】在 ASP.NET jQuery AJAX POST 中传递值数组【英文标题】:Passing an array of values in an ASP.NET jQuery AJAX POST 【发布时间】:2011-04-24 23:25:08 【问题描述】:我的页面上有一个 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>
我想将选定的值作为数组或逗号分隔的字符串传递。传递这些数据的最佳方式是什么?我该怎么做?
【问题讨论】:
【参考方案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()
如果您正在寻找快速的“n脏”,您可以使用它并构建一个 JSON 数组字符串,如下所示:
var json = ' selectedValues: [' selectedValues.join(',') '] ';
将其传递到接受名为selectedValues
(区分大小写)的数组/集合参数的 .NET JSON 端点应该可以完成您所追求的。您可以将数组/集合指定为 int 或 string 类型,.NET 将自动处理类型转换。
如果它变得比这更复杂,我建议using JSON.stringify() to build the JSON instead of doing it by hand。较新的浏览器本机实现了这一点,但您需要在较旧的浏览器中包含 json2.js(在较新的浏览器中包含它并没有什么坏处;如果可用,它会遵循它们的本机功能)。
【讨论】:
完美,这正是我想要的。谢谢!【参考方案2】:选择元素是否在表单标签内?您可以序列化整个表单并轻松发送。
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
。
【讨论】:
【参考方案3】:以其他方式传递它。 a=1&a=2&a=3 你可以使用 jQuery serialize() http://api.jquery.com/serialize/
【讨论】:
好的,我正在使用它,并且该数据以“lbItems=1&lbItems=3”的形式传递。有没有一种简单的方法可以将这些值反序列化为 C# 中的数组?以上是关于在 ASP.NET jQuery AJAX POST 中传递值数组的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 中的 ASP.NET AJAX 与 jQuery
使用 JQuery $.AJAX 调用调用 ASP.NET 函数