Maison >interface Web >js tutoriel >Comment gérer la fonction d'erreur après le téléchargement du fichier par ajaxfileupload.js

Comment gérer la fonction d'erreur après le téléchargement du fichier par ajaxfileupload.js

一个新手
一个新手original
2017-09-18 10:04:391831parcourir

Lorsque j'ai utilisé ajaxfileupload.js pour télécharger des fichiers aujourd'hui, j'ai rencontré une chose très déprimante. Peu importe que le fichier ait été téléchargé avec succès ou non, la fonction de rappel d'erreur était toujours appelée et la fonction de réussite n'était jamais prise en compte.

Le code est le suivant :

//上传文件
$("#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("失败");
	    }  
	});
  });

Une erreur sera signalée après le téléchargement :


À en juger par le erreur, il peut y avoir un autre symbole "515a91ef98bd562ffc38062fa3209249 dans les données renvoyées. Il s'avère qu'il est au format JSON, mais le format renvoyé n'est évidemment pas au format JSON. J'ai vérifié en ligne et j'ai découvert que parfois l'arrière-plan devait faire autre chose, j'ai donc dû trouver d'autres méthodes. Fichier 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;
		}

Voici la valeur renvoyée. Lors du retour au format JSON, il attribue directement les données. Ce n'est définitivement pas possible, nous devons donc la modifier :

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;
		}
On intercepte le milieu. Voilà.

C'est ma solution, j'espère qu'elle fonctionnera pour les autres.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn