2015-12-02 64 views
0

我想创造我CSHTML文件定制列表使用Ajax调用

.ajax({ 
     type: "GET", 
     cache: false, 
     url: "@Url.Action("getValidationLists")", 
     contentType: "application/json", 
     dataType: "json", 
     success: function (result) {     
      var list = result.list; 
      $.each(list, function (index, value) { 
       alert(value); 
      }); 
     } 
    });  
没有返回

然后Controller收集数据并将其放在一个列出并使用json格式将其返回到我的cshtml文件。控制器方法如下

[HttpGet] 
[Authorize] 
public JsonResult getValidationLists() 
{ 
    List<List<String>> validList = new List<List<String>>(); 
    List<UIReferenceData> results = AddErrorsToModelState<List<UIReferenceData>>(_StaticDataServiceAgent.GetAllAssetTypes()); 
    for (int i = 0; i < results.Count; i++) 
    { 
     List<String> resultList = new List<String>(); 
     string id = results[i].ID.ToString(); 
     string name = results[i].Name; 
     resultList.Add(id); 
     resultList.Add(name); 
     validList.Add(resultList); 
    } 
    return Json(new 
    { 
     validList = validList 
    }, JsonRequestBehavior.AllowGet); 
} 

我试过几个不同的版本,但返回的代码永远不会就得到的警报(值);码。 我错过了什么?

+0

可以调试控制器的方法?你能拦截电话吗? –

+0

是的,只要返回和列表 validList具有正确的数据 – user616076

+0

您是否已验证您正在使用您的控制器方法并且它不会投掷500?如果您正在获取数据,但您没有将其添加到$ .each,则可能需要先解析结果:var list = JSON.parse(result); –

回答

0

你是从你的操作方法返回的JSON响应如下所示

{ 
    "validList": [  
     ["1", "SomeText"], 
     ["2", "SomeText"], 
     ["3", " SomeText"] 
    ] 
} 

你的反应有一个validList属性,它是一个数组,数组中的每个项目又是另一个数组与2项。

这应该工作

success: function (result) {   
    $.each(result.validList, function (index, value) { 
     console.log(value[0]); 
     console.log(value[1]); 
    }); 
} 
+0

是的,工作,谢谢 – user616076

1

属性名称是与你从你的行动返回什么不一致:

var list = result.list; 

应该是:

var list = result.validList; 

但是你返回List<List<String>>而非List<String>了。

我认为你需要解决以上两个问题才能解决。

相关问题