DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> js ajaxfileupload.js上傳報錯的解決方法
js ajaxfileupload.js上傳報錯的解決方法
編輯:關於JavaScript     

相信大家在工作中經常用到文件上傳的操作,因為我是搞前端的,所以這裡主要是介紹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);
      }
     })

按照教程,這樣子上傳的話是沒有問題的,可是它一直有一個報錯。報的是什麼錯有點忘了,不好意思 ,因為用完很久才記得補回這篇文章,但是要修改它的源碼,那個錯誤就可以解決了 

它源碼的最後一段是這樣子的

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" ){
   // 因為json數據會被<pre>標簽包著,所以有問題,現在添加以下代碼,
   // 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 報這錯jQuery.handleError is not a function

版本1.4.2之前的版本才有handlerError方法,例子裡使用的Jquery是1.2的,解決方法:

為了能夠繼續使用ajaxfileupload上傳我們的附件,只好將下面代碼拷進我們的項目中的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] ); 
        } 
  } 

以上就是面對ajaxupload.js上傳報錯問題的解決方法,希望能幫助大家解決困難,也希望大家繼續關注更多精彩內容。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved