jQuery对ajax请求返回“parsererror”
jQuery对ajax请求返回“parsererror”
我在使用Ajax请求时一直遇到jquery返回的“parsererror”错误,我尝试将POST改成GET,以多种不同的方法返回数据(创建类等),但是我无法弄清楚问题出在哪里。
我的项目是MVC3,使用的是jQuery 1.5。
我有一个下拉框,当onchange事件触发时调用某个方法获取基于所选内容的数据。
下拉框:(这将从视图包中的列表加载“Views”,并且触发事件也很顺利)
@{ var viewHtmls = new Dictionary<string, object>(); viewHtmls.Add("data-bind", "value: ViewID"); viewHtmls.Add("onchange", "javascript:PageModel.LoadViewContentNames()"); } @Html.DropDownList("view", (List)ViewBag.Views, viewHtmls)
JavaScript:
this.LoadViewContentNames = function () { $.ajax({ url: '/Admin/Ajax/GetViewContentNames', type: 'POST', dataType: 'json', data: { viewID: $("#view").val() }, success: function (data) { alert(data); }, error: function (data) { debugger; alert("Error"); } }); };
上面的代码成功调用了MVC方法,并返回:
[{"ViewContentID":1,"Name":"TopContent","Note":"Content on the top"}, {"ViewContentID":2,"Name":"BottomContent","Note":"Content on the bottom"}]
但是jQuery为$.ajax()方法触发错误事件,显示“parsererror”。
admin 更改状态以发布 2023年5月22日
请查看 @david-east 的回答以获取正确处理该问题的方法。
本回答仅适用于使用 file: 协议时的 jQuery 1.5 错误。
我最近在升级到 jQuery 1.5 时遇到了类似的问题。尽管获得了正确的响应,但错误处理程序仍然触发了。我通过使用 complete
事件,然后检查状态值来解决了这个问题。例如:
complete: function (xhr, status) { if (status === 'error' || !xhr.responseText) { handleError(); } else { var data = xhr.responseText; //... } }