MVC ajax中的控制器调用失败

时间:2014-04-14 04:25:57

标签: jquery ajax asp.net-mvc

我得到了控制器,它在Json中返回带有图像的pathes列表。我想解析它并逐个输出图像。但是我的ajax脚本无效。 (当我点击链接时,我也添加了@Html.ActionLink正常工作。

所以继承代码

脚本:

<div>

@Html.ActionLink("Header", "GetImagesList") ;



 <script type="text/javascript">

     $.ajax({
        url: "/Header/GetImagesList",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (text) {
        var  fileList = JSON.parse(text);
            for (var i = 0; i < fileList.length; i++) {
                document.write("<div>" + " <img src="+fileList[i]+" alt=\"image\" /> "+ "</div>");
            }
            alert("test");
        }   
    });
</script>
</div>

控制器

public ActionResult GetImagesList()
{
    var imagesList = Directory.GetFiles("C:\\Images");
    return Json(imagesList, JsonRequestBehavior.AllowGet);
}

3 个答案:

答案 0 :(得分:2)

因为dataType是&#34; json&#34;,jQuery应该已经为你解析JSON,而成功回调中的参数应该是一个JavaScript数组。没有必要再次解析它......

success: function (fileList) {
        for (var i = 0; i < fileList.length; i++) {
            document.write("<div>" + " <img src="+fileList[i]+" alt=\"image\" /> "+ "</div>");
        }
    } 

答案 1 :(得分:0)

尝试这样的事情......

Result 
{
    for (var i = 0; i < fileList.length; i++) {
        alert("<div>" + " <img src="+fileList[i]+" alt=\"image\" /> "+ "</div>");
    }
} 

public JsonResult GetImagesList()
{
    var imagesList = Directory.GetFiles("C:\\Images");
    return Json(imagesList, JsonRequestBehavior.AllowGet);
}

答案 2 :(得分:-1)

你应该试试这个:

@Html.ActionLink("Header", "GetImagesList",null,new{@id="link"}) ;

 <script type="text/javascript">
$("#link").click(function(){
 $.ajax({
    url: "@Url.Action("GetImagesList","Header"),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (text) {
    var  fileList = JSON.parse(text);
        for (var i = 0; i < fileList.length; i++) {
            document.write("<div>" + " <img src="+fileList[i]+" alt=\"image\" /> "+ "</div>");
        }
        alert("test");
    }   
});

});