标题: jQuery ajax返回parsererror错误的解决方法
作者: Demon
链接: http://demon.tw/programming/jquery-ajax-parsererror.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
在WSH中使用jQuery ajax下载图片,却返回parsererror错误,Google了一下,找到了解决方法,记录之。
在jQuery中ajax请求方法返回的时候,会去解析返回的值,企图将返回值解析为文本,例如responseXML,或者responseText。如果请求的数据为二进制数据(例如图片),jQuery就会报parsererror的错。其实这也不算是jQuery的Bug,因为XMLHTTPRequest的API原本就是为了处理纯文本形式的数据,但纯文本数据本身也是二进制的,XMLHTTPRequest是可以请求二进制数据的。
jquery.js(1.2.6)中报错的位置是在第2878行的httpData函数中:
httpData: function( xhr, type, filter ) { var ct = xhr.getResponseHeader("content-type"), xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0, data = xml ? xhr.responseXML : xhr.responseText; if ( xml && data.documentElement.tagName == "parsererror" ) throw "parsererror"; //......
可以看出,这里的xml变量不管是true还是false,data都会去获取responseXML或者responseText,也就是去解析返回的内容。很明显,如果返回的是非文本的数据,这里就会抛出parsererror的异常(注:其实也不是所有的非文本数据都会抛出异常)。修改后:
httpData: function( xhr, type, filter ) { if (type == "binary") return xhr.responseBody; var ct = xhr.getResponseHeader("content-type"), xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0, data = xml ? xhr.responseXML : xhr.responseText; if ( xml && data.documentElement.tagName == "parsererror" ) throw "parsererror"; //......
判断ajax方法中的dataType参数,如果是binary的话直接返回responseBody,看你还报错!记得在ajax请求中把dataType设置成binary哦:
$.ajax({ url: url, dataType: "binary", async: false, success: function() { //do something } });
参考链接:jQuery中ajax方法的改进
相关推荐
完美解决js跨域,ajax报parsererror。框架struts2+Spring。
ajax请求报parsererror错误是很宽泛的概念,很多情况下都报这个错, 在很多时候,即使ajax提交、返回都正常 XMLHttpRequest.status=200 (正常响应) XMLHttpRequest.readyState=4 (正常接收) ajax也会提示一个parse...
Saving ASP.Net Form Data with jQuery AJAX and JSON Parser
主要介绍了Servlet 与 Ajax 交互一直报status=parsererror的解决办法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
解决用windows自带的记事编辑xml文件后出现 "XML Parser Error on line 1: 前言中不允许有内容。"的错误
这个回调函数得到2个参数: jqXHR (in jQuery 1.4.x, XMLHTTPRequest) 对象和一个描述成功请求类型的字符串("success", "notmodified", "error","timeout", or "parsererror") 。在jQuery 1.5, complete设置可以...
+ ajax的error回调的第二个参数可能值"timeout", "error", "notmodified" 和 "parsererror" + ajax参数xhr * animate 的duration为0的问题 * show, hide, toggle, slideDown, slideUp, slideToggle 在jQuery 1.3中,...
最近用到了layui表格组件,结果发现数据返回状态异常 在网上查询了下是因为需要转成固定个格式 然而layui的table默认返回的数据格式为: response: { //定义后端 json 格式,详细参见官方文档 code: 0, msg: "", ...
error-stack-parser, 从JS错误中提取含义 error-stack-parser.js-- 从JS错误中提取含义 简单,跨浏览器 错误分析器。 这个库解析并提取函数名。url 。行号和列号,作为一个框架集的一个 array,作为一个的。一旦你...
包含扩展jquery.accordion.js、jquery.combobox.js、jquery.datagrid.js、jquery.datebox.js、...jquery.parser.js、jquery.select2.js、jquery.tabs.js、jquery.tooltip.js、jquery.tree.js、jquery.validatebox.js
整理了Stanford Parser的部分使用方法
+ ajax的error回调的第二个参数可能值"timeout", "error", "notmodified" 和 "parsererror" + ajax参数xhr * animate 的duration为0的问题 * show, hide, toggle, slideDown, slideUp, slideToggle 在jQuery 1.3中,...
内容索引:脚本资源,jQuery,字符串解析 jQuery url Parser可以用来解析URLs字符串,你可以通过这款插件获取协议、主机、端口、查询参数、文件名、路径等。
主要介绍了JqueryEasyUI $.Parser,需要的朋友可以参考下
enju parser enju parser
今天小编就为大家分享一篇解决layui table表单提示数据接口请求异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要用来解决:Parser Error Message: Could not load file or assembly 'System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies....