关于jquery:Ajax Action调用抛出一个错误

Ajax Action call throws an Error

我的代码好像有点错误。但我找不到。

所以,我从Ajax函数调用控制器中的一个动作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var serviceURL = '/Vm/GetVMInformation';

$.ajax({
    type:"GET",
    url: serviceURL,
    contentType:"application/json; charset=utf-8",
    dataType:"json",
    success: function (result) {
        alert("This Works fine");
        $("#testDiv").html(result); // Display the partial View in this div
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
    }
});

然后,我的操作返回一个局部视图和一个列表对象。

1
2
3
4
5
6
public ActionResult GetVMInformation()
{
    List<VmInfo> VMListArray = new List<VmInfo>();
    ... Code ...
    return PartialView("_List", VmList);
}

该操作将被调用,部分视图将工作。我测试了它。所以问题是,我的Ajax函数不成功。所以它抛出了一个错误。当我警告错误时,我只得到"内部服务器错误"。

有人看到我的错误吗?

注:我的部分观点。不确定它是否重要

1
2
3
4
5
6
7
<!--This partial View is just for testing the ajax function-->

@model IsolutionsAzureManager.Models.VmData

<p>
@Model.Name[0]
</p>

更新:

所以我把函数的返回类型(现在是jsonresult类型)改为json

1
2
3
4
5
6
7
    JavaScriptSerializer jss = new JavaScriptSerializer();

    string output = jss.Serialize(VmList);
    Response.Write(output);
    Response.Flush();
    Response.End();
    return Json("_List", output);

好消息是:Ajax调用现在成功了。坏消息是:我仍然无法显示我的部分视图。返回值(结果)只是[对象,对象]

1
2
3
    success: function (result) {
        $("#testDiv").html(result);
    },


如果您得到一个500错误在您的应用程序中是错误的。

如果您得到一个JS错误,可能是因为您的JS期望返回JSON,但是由于您返回一个部分视图,返回的内容是HTML。控制器操作应将列表转换为JSON对象,操作返回类型应为JSONResult。或者更改JS中的预期结果类型。

*更新

您看到"对象"是因为您只是将JSONJECT抛出到HTML中。要正确显示它,需要使用对象。因为它是一个序列化的列表,所以需要对它进行迭代,对每个条目做一些事情。像这样的东西

1
2
3
for (var i = 0; i < result.length; i++) {
    alert(result[i].name);
}

其中".name"是您的VmInfo类中的某个字段。


内部服务器错误意味着您的服务器抛出异常并响应500 HTTP状态。您需要调试GetVMInformation操作,请参阅原因。