jquery.uploadify+jquery.form中使用ajaxSubmit提交时没有走提交后的Success事件,一点提交直接Post过去了,然后就结束了,也没走提交完后的事件。
用火狐找了后发现 TypeError: $.handleError is not a function
提交时出现:TypeError: $.handleError is not a function
因为$.handleError 只在jquery-1.4.4之前的版本中存在,jquery-1.6 ,1.7和1.8中都没有这个函数了,因此在1.4.4中将这个函数复制到了jquery.uploadify.js中,问题解决方法
(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;
}
});
})(jQuery);
同时也解决了提交后的json返回的问题
有的返回:<pre>{"IsSuccess":1,"Message":"操作成功"}</pre>
解决方法:返回时用: return Json(new { IsSuccess = flag, Message = message }, "text/html");
备注用参考方法:
$('#form1').ajaxSubmit(function (data) {
alert(data)
var result = data.replace("<pre>", "");
result = result.replace("</pre>", "");
data = (new Function("", "return " + result))();
if (data.IsSuccess == 1) {
alert("保存成功");
return false;
} else if (data.IsSuccess == 0) {
alert(data.Message);
} else {
alert(data.Message);
}
});
其中:var result = data.replace("<pre>", "");
result = result.replace("</pre>", "");
data = (new Function("", "return " + result))();
可有可无,某种情况下你很需要它