当前位置: 首页 > 面试题库 >

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

秦城
2023-03-14
问题内容

我的页面上有一个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将自动处理类型转换。

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



 类似资料:
  • 问题内容: 当您将诸如list,array之类的集合传递给python中的另一个函数时,它是否会复制它,还是只是一个指针? 问题答案: Python按值传递对对象的引用。 Python按值传递对对象的引用(例如Java),Python中的所有对象都是对象。这听起来很简单,但是随后您会注意到某些数据类型似乎表现出按值传递特性,而其他数据类型似乎表现为按引用传递……这是怎么回事? 了解可变和不可变的对

  • 问题内容: 数组不是Java中的原始类型,但它们也不是对象,因此它们是按值还是按引用传递?它是否取决于数组包含的内容,例如引用或原始类型? 问题答案: 。如果是Array(只不过是Object),则数组引用按值传递。(就像对象引用按值传递)。 当你将数组传递给其他方法时,实际上是复制对该数组的引用。 通过该引用对数组内容进行的任何更改都会影响原始数组。 但是,将引用更改为指向新数组不会更改原始方法

  • 问题内容: 假设我有这个功能: 我想这样称呼它: 当然,不能用这种方法来完成,因为Postgres试图用该名称和三个不存在的参数来查找函数。 我试图用引号引起来,但在这种情况下,参数解释错误: data1’,’data2’,’data3 ,就像一个字符串一样。 有没有一种方法可以在参数中放置多个值,以便IN子句可以识别它? 问题答案: 您的函数将不会被创建。之后是句法废话。 无论哪种方式,带有 参

  • 数组在Java中不是一种基元类型,但它们也不是对象,那么它们是通过值传递还是通过引用传递呢?它是否取决于数组包含什么,例如引用或基元类型?

  • 我知道我不能用这样的方式传递数组。我是否需要通过引用,如果是,如何?问题在下面供参考。 编写一个名为MethodsArrays的Java程序,它有4个静态方法,分别为fillArray()、sumArray()、avgArray()和printArray()。应该从main方法调用fillArray()方法。fillArray()方法应该使用一个扫描程序来接受一个表示数组长度的数字,然后读取数字来

  • 问题内容: 在java中是值传递还是引用传递,有什么区别? 问题答案: Java总是按值传递参数,而不是按引用传递参数。 看下面一个实例: