最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

ajaxfileupload.js上传文件后调用error函数该如何处理

来源:懂视网 责编:小采 时间:2020-11-27 20:13:08
文档

ajaxfileupload.js上传文件后调用error函数该如何处理

ajaxfileupload.js上传文件后调用error函数该如何处理:今天用ajaxfileupload.js上传文件时,用到了一个让人很郁闷的事情,就是无论上传文件成功与否,总是调用error回调函数,一直不用心success函数。代码如下://上传文件 $("#CompChange").click(function() { var param
推荐度:
导读ajaxfileupload.js上传文件后调用error函数该如何处理:今天用ajaxfileupload.js上传文件时,用到了一个让人很郁闷的事情,就是无论上传文件成功与否,总是调用error回调函数,一直不用心success函数。代码如下://上传文件 $("#CompChange").click(function() { var param
今天用ajaxfileupload.js上传文件时,用到了一个让人很郁闷的事情,就是无论上传文件成功与否,总是调用error回调函数,一直不用心success函数。

代码如下:

//上传文件
$("#CompChange").click(function() {
 var params = $("#CompchangeTable").serialize();
 var json0={'video.slogan':$('#Cbasic_score').val(),'video.videoKind':$("#Cextra_score").val(),
	 'video.videoName':$("#name").val()};

 $.ajaxFileUpload({ 
	 type: "POST", 
	 url: "adminAction-upFile.action", 
	 data:json0,//要传到后台的参数,没有可以不写 
	 secureuri : false,//是否启用安全提交,默认为false 
	 fileElementId:['file1','file2'],//文件选择框的id属性 
	 dataType: 'json',//服务器返回的格式 
	 async : false, 
	 success: function(data){ 
 alert("成功");
	 }, 
	 error: function (data, status, e){ 
	 alert("失败");
	 } 
	});
 });

上传后会报错:


从报错上看可能是多了一个"<"符号。经过大量的尝试后,终于发现了不对劲的地方。我是把dataType的类型换成了context类型,并在success函数中打印出data。

结果是:


你回发现返回的数据中有<pre>标签,问题终于找到了,原来是JSon格式,但是返回的格式明显不是JSon格式,在网上查了一下才知道有时候后台必须要则么做,所以只能找别的方法了,最后就在ajaxfileupload.js文件里发现了这个:

	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("<p>").html(data).evalScripts();

	return data;
	}

这就返回的值,返回JSon格式时,它直接把数据赋值,这肯定是不行的,所以我们要做修改:

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"){
	 ////////////以下为新增代码/////////////// 
	 data = r.responseText; 
	 var start = data.indexOf(">"); 
	 if(start != -1) { 
	 var end = data.indexOf("<", start + 1); 
	 if(end != -1) { 
	 data = data.substring(start + 1, end); 
	 } 
	 } 
	 ///////////以上为新增代码/////////////// 	
	eval("data = " + data);
	}
	// evaluate scripts within html
	if (type == "html")
	jQuery("<p>").html(data).evalScripts();

	return data;
	}

我们把中间的截取出来就行了。

这就是我的解决方法,希望对其他人也有用。

文档

ajaxfileupload.js上传文件后调用error函数该如何处理

ajaxfileupload.js上传文件后调用error函数该如何处理:今天用ajaxfileupload.js上传文件时,用到了一个让人很郁闷的事情,就是无论上传文件成功与否,总是调用error回调函数,一直不用心success函数。代码如下://上传文件 $("#CompChange").click(function() { var param
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top