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"是您的
内部服务器错误意味着您的服务器抛出异常并响应500 HTTP状态。您需要调试