6

C# メソッドへの AJAX 呼び出しでリストを取得し、その項目を jQuery で表示しようとしていますが、できません。これが私が得たものです:

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

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

これは期待どおりに機能し、「test ok」という文字列でアラートが表示されます。ただし、リストを返そうとすると、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 が必要な理由で使用する必要JsonRequestBehavior.AllowGetがある理由を確認してください。: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); 
});

successanderrorは非推奨です。代わりに.doneandを使用してくださいfail

于 2013-11-02T00:39:12.870 に答える