jquery.uploadify+jquery.form异步提交那点事

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))();

可有可无,某种情况下你很需要它



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值