6

我正在尝试通过 AJAX 调用 C# 方法获取列表并使用 jQuery 显示其项目,但我无法做到。这是我得到的:

public string test()
{
    return "test ok";            
}

$.ajax({
    type: "POST",
    url: "Computer/test",
    success: function (data) {
        alert(data);
    },
    error: function () {
        alert("error");
    }
});

这按预期工作,我收到带有“测试正常”字符串的警报。但是,如果我尝试返回一个列表,我将无法在 jquery 中遍历它。

public List<string> testList()
{
    List<string> test = new List<string>;
    test.Add("test1");
    test.Add("test2");
    return test;
}

$.ajax({
    type: "POST",
    url: "Computer/testList",
    dataType: "json",
    success: function (data) {
        var list = data.d;
        $.each(list, function (index, item) {
            alert(item);
        });
    },
    error: function (xhr) {
        alert(xhr.responseText);               
    }
});

使用此代码,我收到以下错误:

System.Collections.Generic.List`1[System.String]

希望你能帮助我,谢谢。

4

4 回答 4

11

Json在服务器端使用,JsonRequestBehavior.AllowGet查看我们必须使用的原因为什么JsonRequestBehavior需要JsonRequestBehavior?

public JsonResult testList()
{
    List<string> test = new List<string>;
    test.Add("test1");
    test.Add("test2");
    return Json(test,JsonRequestBehavior.AllowGet);
}

你JS:

$.ajax({
    type: "POST",
    url: "Computer/testList",
    dataType: "json"
})
.done(function(data){
   var list = data;
   $.each(list, function (index, item) {
       alert(item);
   });
})
.fail(function(xhr){
    alert(xhr.responseText); 
});

success并且error已弃用,使用.doneandfail代替

于 2013-11-02T00:39:12.870 回答
1

更改您的控制器操作以返回 Json:

public JsonResult testList()
{
    List<string> test = new List<string>;
    test.Add("test1");
    test.Add("test2");
    return Json(test);
}
于 2013-11-02T00:30:15.940 回答
1

尝试使用ActionResult通过该Json()方法返回 JSON 数据的返回类型,如下所示:

public ActionResult testList()
{
    List<string> test = new List<string>;
    test.Add("test1");
    test.Add("test2");

    return Json(test);
}

注意:在您的 jQuery.ajax()调用中,您也不再需要该data.d语法,因此您的 jQuery 将如下所示:

$.ajax({
    type: "POST",
    url: "Computer/testList",
    dataType: "json",
    success: function (data) {
        var list = data;
        $.each(list, function (index, item) {
            alert(item);
        });
    },
    error: function (xhr) {
        alert(xhr.responseText);               
    }
});
于 2013-11-02T00:30:37.213 回答
0

首先在你的 C# 代码中使用 JsonResult。JsonResult 在 ASP.NET MVC 中更可靠地返回数据。

只需在 c# 中使用字典即可​​返回 KeyValuePair 的集合

于 2013-11-02T03:47:09.813 回答