一、背景:
一直运行正确的一个ajax表单提交页面,今天报以下这个错误:
二、问题分析:
一般出现“Uncaught TypeError”这类型的错误,有如下4个原因:
1:引入的js里面undefined未定义该函数
这种情况一般检查一下是否有改函数即可。一般更换新版本的js之后可能老版本的js方法就没有了。这个时候可以手动地把老版本的js方法加到新的版本,或者更改方法。
比如遇到过 handleError is not a function 这种情况就是这个原因。如果在jquery高级版本中将这个函数添加上 ,问题解决。

; (function ($) { jQuery.extend({ handleError: function (s, xhr, status, e) { if (s.error) { s.error.call(s.context || s, xhr, status, e); } if (s.global) { (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]); } }, httpData: function (xhr, type, s) { 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"; if (s && s.dataFilter) data = s.dataFilter(data, type); if (typeof data === "string") { if (type == "script") jQuery.globalEval(data); if (type == "json") data = window["eval"]("(" + data + ")"); } return data; } });[/code]
2:您的js文件引入路径错误了。
这个比较常见,检查引入路径是否正确即可。
3:您引入的js文件与别的js文件有冲突
这个时候就需要一个个的注释掉js文件来排查。
4:您引入的js文件顺序不对,也存在冲突,你就要调整一下引入顺序即可,或删除掉冲突的js文件,这是小编遇到的这种情况!
5、缺少返回的json数据
三、问题解决:
我的问题的原因属于第4种情况。在出问题所在的页面的模板页(master)里面引用的 jquery.form.js 这个文件和H-ui.min.js、H-ui.admin.js 冲突了。
采用的方法是把jquery.form.js 引用放到H-ui.min.js、H-ui.admin.js这两个前面