js ajaxfileupload.js上傳報(bào)錯(cuò)的解決方法

字號(hào):


    這篇文章主要為大家詳細(xì)介紹了js ajaxupload.js上傳報(bào)錯(cuò)的解決方法,感興趣的小伙伴們可以參考一下
    相信大家在工作中經(jīng)常用到文件上傳的操作,因?yàn)槲沂歉闱岸说?,所以這里主要是介紹ajax在前端中的操作。代碼我省略的比較多,直接拿js那里的
    $.ajaxFileUpload({
          url:'www.coding/mobi/file/uploadSingleFile.html',//處理圖片腳本
          secureuri :false,
          fileElementId :'image2',//file控件id。就是input type="file" id="image2"
          dataType : 'json',
          success : function (data, status){
           console.log(data);
          },
          error: function(data, status, e){
           alert(e);
          }
         })
    按照教程,這樣子上傳的話是沒有問題的,可是它一直有一個(gè)報(bào)錯(cuò)。報(bào)的是什么錯(cuò)有點(diǎn)忘了,不好意思 ,因?yàn)橛猛旰芫貌庞浀醚a(bǔ)回這篇文章,但是要修改它的源碼,那個(gè)錯(cuò)誤就可以解決了 
    它源碼的最后一段是這樣子的
    uploadHttpData: function( r, type ) {
      var data = !type;
      data = type == "xml" || data ? r.responseXML : r.responseText;
      // If the type is "script", eval it in global context
      if ( type == "script" )
       jQuery.globalEval( data );
      // Get the JavaScript object, if JSON is used.
      if ( type == "json" )
       eval( "data = " + data );
      // evaluate scripts within html
      if ( type == "html" )
       jQuery("<div>").html(data).evalScripts();
       //alert($('param', data).each(function(){alert($(this).attr('value'));}));
      return data;
     }
    將這一段改為這樣子
    uploadHttpData: function( r, type ) {
      var data = !type;
      data = type == "xml" || data ? r.responseXML : r.responseText;
      // If the type is "script", eval it in global context
      if ( type == "script" )
       jQuery.globalEval( data );
      // Get the JavaScript object, if JSON is used.
      if ( type == "json" ){
       // 因?yàn)閖son數(shù)據(jù)會(huì)被<pre>標(biāo)簽包著,所以有問題,現(xiàn)在添加以下代碼,
       // update by hzy
       var reg = /<pre.+?>(.+)<\/pre>/g; 
       var result = data.match(reg);
       result = RegExp.$1;
       // update end
       data = $.parseJSON(result);
       // eval( "data = " + data );
      // evaluate scripts within html
     }
      if ( type == "html" )
       jQuery("<div>").html(data).evalScripts();
       //alert($('param', data).each(function(){alert($(this).attr('value'));}));
      return data;
     }
    這樣就可以正常使用了。
    另一種情況:ajaxFileUpload 報(bào)這錯(cuò)jQuery.handleError is not a function
    版本1.4.2之前的版本才有handlerError方法,例子里使用的Jquery是1.2的,解決方法:
    為了能夠繼續(xù)使用ajaxfileupload上傳我們的附件,只好將下面代碼拷進(jìn)我們的項(xiàng)目中的ajaxfileupload.js文件中
    handleError: function( s, xhr, status, e )   { 
        // If a local callback was specified, fire it 
            if ( s.error ) { 
              s.error.call( s.context || s, xhr, status, e ); 
            } 
            // Fire the global callback 
            if ( s.global ) { 
              (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] ); 
            } 
      }
    以上就是面對(duì)ajaxupload.js上傳報(bào)錯(cuò)問題的解決方法,希望能幫助大家解決困難