Home > Web Front-end > JS Tutorial > js ajaxfileupload.js upload error solution_javascript skills

js ajaxfileupload.js upload error solution_javascript skills

WBOY
Release: 2016-05-16 15:02:04
Original
1740 people have browsed it

相信大家在工作中经常用到文件上传的操作,因为我是搞前端的,所以这里主要是介绍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);
      }
     })
Copy after login

按照教程,这样子上传的话是没有问题的,可是它一直有一个报错。报的是什么错有点忘了,不好意思 ,因为用完很久才记得补回这篇文章,但是要修改它的源码,那个错误就可以解决了

它源码的最后一段是这样子的

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;
 }
Copy after login

将这一段改为这样子

uploadHttpData: function( r, type ) {
  var data = !type;
  data = type == "xml" || data &#63; 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 class="brush:php;toolbar:false">标签包着,所以有问题,现在添加以下代码,
   // update by hzy
   var reg = /<pre.+&#63;>(.+)<\/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;
 }
Copy after login

这样就可以正常使用了。

另一种情况: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 &#63; jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] ); 
        } 
  } 
Copy after login

以上就是面对ajaxupload.js上传报错问题的解决方法,希望能帮助大家解决困难,也希望大家继续关注脚本之家更多精彩内容。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template