似乎我的代码中有一点错误。但是我找不到它。
所以,我从我的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);
},
答案 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
操作才能看到原因。