jquery - 将字符串数组从 MVC 返回到 jQuery ASP.NET

标签 jquery asp.net-mvc arrays system.array

我想通过 jQuery AJAX 调用从 MVC 函数返回字符串数组。

我的客户端代码是:

function get_categories() {
    var url = "/Profile/GetCharacters";
    $.post(url, function (data) {
    alert(data);
});

但是我无法读取数组元素。在 alert(data) 中,它总是显示 system.array[]alert(data[0]) 中,它显示的是 s (即 system.array[] 中的第一个字符),而不是数组元素。

这是我的服务器端代码的简化版本..因为原始代码太复杂了:)

public Array GetCharacters()
    {

        var ret = new string[10];
        ret[0]="abc";
        ret[1] = "def";
        ret[2] = "ghi";
        return (ret);
    }

但这会给出“System.string[]”,并且在访问单个值时出现同样的问题

最佳答案

您可以返回 JSON。

例如,您可以向以下 Controller 操作发出 Ajax 请求:

public JsonResult GetMyData()
{
    SomeClass s = new SomeClass();
    s.Property1 = "value";
    s.Property2 = "another value";

    return Json(s, JsonRequestBehavior.AllowGet); //you will need the AllowGet option to return data to a GET request
}

然后,您的 JavaScript 可以向 Controller 发出 Ajax 请求(使用 jQuery 的 Ajax 函数):

var onSuccess = function (data) {
    //data will be your s object, in JSON format
};

$.ajax({
    type: 'GET',
    url: '/ControllerName/GetMyData/',
    success: function (data) { onSuccess(data); }
});

编辑:返回数组或列表时,您需要向 Ajax 调用添加传统:true 选项,如下所示:

var onSuccess = function (data) {
    //data will be your s object, in JSON format
};

$.ajax({
    type: 'GET',
    url: '/ControllerName/GetMyData/',
    success: function (data) { onSuccess(data); },
    traditional: true
});

我不是 100% 确定原因(我确信有人会告诉我们),但这在过去让我感到不舒服。

再编辑:您可能需要解析 JSON,这应该为您创建一个实际的 javascript 数组对象:

var onSuccess = function (data) {
    //data will be your s object, in JSON format
    var arr = JSON.parse(data);
};

关于jquery - 将字符串数组从 MVC 返回到 jQuery ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227408/

相关文章:

php - 在最小化/最大化期间滑动图像对齐变化

c# - Fluent nHibernate 和 asp.net MVC 入门

java - 如何查找附加到数组的特定索引的值

java - 在一行中用数组初始化 ArrayList

jQuery-turbolinks - link_to 确认 : pops up several times times in Rails

javascript - 如何获取相同标签或先前的 td 内部标签类

jquery - React 中的 Bootstrap——无法解析 jQuery 模块?

c# - 选中复选框时防止出现多个主项

jquery - 使用 jquery 的 ASP.NET MVC Ajax 可扩展表单

c - secret 敲击项目中确定的振幅