首页 > Js开发 > jquery.uploadify+jquery.form异步提交那点事

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中,问题解决方法

[html]

  1. (function($) {  
  2.     jQuery.extend({  
  3.         handleError: function(s, xhr, status, e) {  
  4.             if (s.error) {  
  5.                 s.error.call(s.context || s, xhr, status, e);  
  6.             }  
  7.             if (s.global) {  
  8.                 (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]);  
  9.             }  
  10.         },  
  11.         httpData: function(xhr, type, s) {  
  12.             var ct = xhr.getResponseHeader("content-type"),  
  13.                 xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,  
  14.                 data = xml ? xhr.responseXML : xhr.responseText;  
  15.             if (xml && data.documentElement.tagName == "parsererror")  
  16.                 throw "parsererror";  
  17.             if (s && s.dataFilter)  
  18.                 data = s.dataFilter(data, type);  
  19.             if (typeof data === "string") {  
  20.                 if (type == "script")  
  21.                     jQuery.globalEval(data);  
  22.                 if (type == "json")  
  23.                     data = window["eval"]("(" + data + ")");  
  24.             }  
  25.             return data;  
  26.         }   
  27.     });  
  28. })(jQuery);  

 

同时也解决了提交后的json返回的问题
有的返回:<pre>{"IsSuccess":1,"Message":"操作成功"}</pre>

解决方法:返回时用:  return Json(new { IsSuccess = flag, Message = message }, "text/html");

备注用参考方法:

[html]

  1. $('#form1').ajaxSubmit(function (data) {  
  2.                           alert(data)  
  3.                            var result = data.replace("<pre>", "");  
  4.                           result = result.replace("</pre>", "");  
  5.                           data = (new Function("", "return " + result))();  
  6.                           if (data.IsSuccess == 1) {  
  7.                              
  8.                               alert("保存成功");  
  9.                                
  10.                               return false;  
  11.                           } else if (data.IsSuccess == 0) {  
  12.                               alert(data.Message);  
  13.                                
  14.                           } else {  
  15.                               alert(data.Message);  
  16.                           }  
  17.                       });  

其中:var result = data.replace("<pre>", "");
result = result.replace("</pre>", "");
data = (new Function("", "return " + result))();

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


本文固定链接: http://www.devba.com/index.php/archives/6255.html | 开发吧

报歉!评论已关闭.