【问题标题】:jquery Parsererror in $.ajaxSetup()$.ajaxSetup() 中的 jquery Parsererror
【发布时间】:2011-08-23 18:57:46
【问题描述】:

我目前正在开发一个 jquery 程序。我的程序在 firefox 3.5 中运行良好,但直到我将浏览器升级到 firefox 4.0。从那以后,'parsererror' 一直没有出现,这让我很头疼。

我注意到这是我的代码中 FIRST 'parsererror' 显示的部分:

$(document).ready( function() { 
   ...

   $.ajaxSetup({
      timeout: 10000,
      error: function(xhr, msg, e) {
        showMessage('HTTP error: ' + JSON.stringify(msg) + '.'); //this is the parsererror
      }    
   });  
   .
   .
})  

不仅如此,我的动态标签不再出现在我的页面中。我注意到每次如果删除此行'<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>',它就会出现,但我的其他 jquery 元素并不好。我不知道怎么了。也许这是某种不兼容的问题,但我只是不知道从哪里开始修复。请帮忙。

编辑: 这是它返回的 json。这应该是用于我的动态菜单,它将创建您单击的选项卡 Evry 菜单。但这没有显示。

 [ 
      {"title": "File","submenus":[
         {"title": "Open","submenus":[]},         
         { "title": "New", "submenus":[]},
         { "title": "Save as", "submenus":[]},
         { "title": "Save", "submenus":[]}
      ]},
      { "title": "View","submenus":[]},
      { "title": "viewAll", "submenus":[]},
      { "title": "Close","submenus":[]},
      {"title":"jQgrid", "submenus":[]}  
 ]

【问题讨论】:

  • 您能否提供 JSON 数据的样例?
  • 我的 JSON 来自服务器端。我只是将它转换为 json 以便程序能够读取它。这是我的示例代码:stackoverflow.com/questions/5309114/…

标签: javascript ajax jquery parse-error


【解决方案1】:

jQuery Ajax 错误documentation的描述

错误(jqXHR、textStatus、errorThrown)

功能

一个函数 如果请求失败则调用。这 函数接收三个参数: jqXHR(在 jQuery 1.4.x 中, XMLHttpRequest) 对象,一个字符串 描述错误的类型 发生和一个可选的异常 对象,如果发生了。可能的 第二个参数的值 (除了空)是“超时”,“错误”, “中止”和“解析器错误”。当一个 发生 HTTP 错误,errorThrown 接收文本的部分 HTTP 状态,例如“未找到”或 “内部服务器错误。”从 jQuery 开始 1.5、错误设置可以接受数组函数。每个功能都会 被依次调用。注意:这个处理程序 跨域脚本不调用 和 JSONP 请求。这是一个阿贾克斯 事件

在你的代码中

JSON.stringify(msg)

查看 jQuery 文档,您会看到第二个参数是一个字符串,而不是您期望的 JSON 对象。解析器正在查看字符串并抛出您所看到的解析错误。

现在如果发生错误并且对象说有错误。 JSON 要求名称周围有双引号。所以人们认为:

{
  foo : "bar",
  color : "red",
  num : 1
} 

是有效的 JSON,但不是。以下是有效的。

{
  "foo" : "bar",
  "color" : "red",
  "num" : 1
} 

【讨论】:

  • 感谢您的回答,但我仍然无法得到它。如果我输入“JSON.stringify(msg)”,它将显示“HTTP 错误:“parsererror”。如果我删除 JSON.stringify,它也会显示相同的消息,但只是没有双引号,'HTTP error: parsererror.'
  • 服务器返回的 JSON 无效。
【解决方案2】:

听起来上面的代码运行良好 - 它告诉您 XMLHttpRequest 返回了错误消息"parsererror"。您可以通过检查错误函数中的e 变量来了解更多信息。但是您提供的代码并没有导致错误,因此我们无法调试它。

【讨论】:

  • 嗯,正如我在 Firefox 3.5 中观察到的,完全没有问题。我可以添加、删除、搜索、过滤来自服务器的数据。它仅在 Firefox 4.0 中。我遇到了这个错误。怎么会这样...?那我的动态标签呢?嗯……
  • 浏览器对从服务器返回的数据进行不同的解析——可能是FF后期版本更严格的JSON或XML解析器。但是您在问题中包含的代码不会以一种或另一种方式影响这一点 - 问题是来自服务器的数据。所以我们不能在没有看到数据的情况下调试它。如果没有看到任何代码,就很难猜出标签的问题。
  • 又名:显示正在返回的 Ajax 响应!
猜你喜欢
  • 2015-10-21
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多