Ajax Action调用抛出一个错误

时间:2014-12-11 09:05:23

标签: jquery asp.net-mvc razor

似乎我的代码中有一点错误。但是我找不到它。

所以,我从我的ajax函数调用Controller中的Action。

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);
    }
});

我的操作然后返回部分视图和列表对象。

public ActionResult GetVMInformation()
{
    List<VmInfo> VMListArray = new List<VmInfo>();
    ... Code ...
    return PartialView("_List", VmList);
}

调用Action,部分View工作。我测试了它。 所以问题是,我的ajax功能不成功。所以它抛出一个错误。当我发出错误警报时,我得到了内部服务器错误&#34;。

有人看到我的错误吗?

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

<!--This partial View is just for testing the ajax function-->

@model IsolutionsAzureManager.Models.VmData

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

更新

所以我将我的函数的返回类型(现在的类型为JsonResult)更改为Json

    JavaScriptSerializer jss = new JavaScriptSerializer();

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

好消息:ajax呼叫现在成功了。 坏消息:我仍然无法显示我的部分视图。返回值(结果)只是[object,Object]

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

2 个答案:

答案 0 :(得分:1)

如果您收到500错误,则表明您的应用程序出现问题。

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

*更新

你看&#34;对象&#34;因为你只是把JSON注入到HTML中。要正确显示它,您需要使用该对象。由于它是一个序列化列表,您需要迭代它对每个条目执行某些操作。 像这样的东西

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

其中&#34; .name&#34;将是您VmInfo班的一些字段。

答案 1 :(得分:0)

内部服务器错误意味着您的服务器抛出异常并响应500 http状态。您需要调试GetVMInformation操作才能看到原因。