当前位置: 首页 > 面试题库 >

jQuery为ajax请求返回“ parsererror”

郭曾笑
2023-03-14
问题内容

我一直在从jquery收到针对Ajax请求的“
parsererror”,我尝试将POST更改为GET,以几种不同的方式(创建类等)返回数据,但是我似乎无法弄清楚问题出在哪里。

我的项目在MVC3中,我使用的是jQuery 1.5,我有一个Dropdown,并在onchange事件上触发了一个调用,以基于所选内容获取一些数据。

下拉列表:(这会从Viewbag的列表中加载“ Views”,并触发事件正常)

@{
    var viewHtmls = new Dictionary<string, object>();
    viewHtmls.Add("data-bind", "value: ViewID");
    viewHtmls.Add("onchange", "javascript:PageModel.LoadViewContentNames()");
}
@Html.DropDownList("view", (List<SelectListItem>)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”。


问题答案:

我最近遇到了这个问题,偶然发现了这个问题。

我用一种简单得多的方法解决了它。

方法一

您可以dataType: 'json'从对象文字中删除该属性…

方法二

或者您可以通过将数据返回为来执行@Sagiv所说的Json

parsererror出现此消息的原因是,当您仅返回一个字符串或另一个值时,它不是真正的Json,因此解析器在解析时会失败。

因此,如果删除该dataType: json属性,它将不会尝试将其解析为Json

使用其他方法,如果您确保将数据返回为Json,则解析器将知道如何正确处理它。



 类似资料:
  • 问题内容: 我想做的事情似乎很简单:通过 HTML 页面并从中提取一个值。 问题是 jQuery 拒绝解析返回的HTML。 同时,我正在玩的小提琴没有用,因此我无法提供其他可行的示例。 更新: 我的新提琴工作正常,但是似乎问题在于,在我的实际项目中,我试图解析大量复杂的HTML。这是一个已知问题吗? 问题答案: 您的代码工作正常。您只是没有正确使用jsFiddle的API。检查文档中的(http:

  • 我在本地服务器上找到了它失败的代码: 在我看来,它似乎不能获得或?

  • 本文向大家介绍jquery+ajax请求且带返回值的代码,包括了jquery+ajax请求且带返回值的代码的使用技巧和注意事项,需要的朋友参考一下 现在比较流行使用jquery的ajax来实现一些无刷新请求效果,本章节提供一个非常简单的代码实例供大家参考之用,希望能够给需要的朋友带来一定的帮助,代码如下: async是asynchronous[异步]的缩写,它是一个bool值默认为true。当as

  • 我试图通过ajax发布json数据。json数据包含一个大的html表。然而,这个POST请求被转换成GET请求,我得到错误414(请求-URI太长)。我知道jsonp POST请求转换成GET,但是为什么我的json请求转换成GET?

  • 问题内容: 我是使用jQuery处理AJAX的新手,并且已经编写了一个基本脚本来掌握基础知识。当前,我正在将AJAX请求发布到同一文件,并且我希望基于该AJAX调用的结果进行一些其他处理。 这是我的代码: 这是我提交数字“ 2”时得到的答复: 显然,我只对接收和使用数字“ 4”感兴趣,因此我的问题是: 确切指定要返回的数据的最佳方法是什么? 我有一些想法: 将我所有的HTML都包装在if语句中(即

  • 问题内容: 以下是ajax请求。 这就是delete.php 运行代码后,它将成功删除文件,但不会显示任何消息。 我也尝试将ajax请求更改为: 仍然不显示该消息。所以我想在delete.php文件中出了点问题。请帮忙。 问题答案: 进行jquery + ajax + php的最佳方法如下: jQuery的: PHP: