1. 问题
问题出在微信端,而且是苹果机的微信端(苹果你咋这么矫情,安卓正常).;代码还是之前的代码,貌似是苹果升级系统后部分版本出现的 BUG,后来证明确实跟 ios 版本有关,网上也找过类似的解决措施;
2. 解决方法
2.1 添加 async: false(未验证)
function saveUser() {$.ajax({type:"POST",url:"SaveUser.action",data:$('#fm').serialize(),dataTyep:"JSON",async: false, //加上之后不在跳转进error success:function(data) {var config = confirm("注册成功,是否登陆");if(config){window.location.href="Login.action";}else{window.location.reload();}},error:function(){alert("系统异常");}});}
修改方法:在ajax里边加上了async: false, 原来是没有加它的,加上然后问题解决了
转:https://blog.csdn.net/bin929/article/details/80183443
2.2 ajaxFileUpload 提交(已验证)
最终采取这种方式处理的
ajaxFileUpload.js文件 ↓
jQuery.extend({createUploadIframe: function(id, uri){//create framevar frameId = 'jUploadFrame' + id;var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"';if(window.ActiveXObject){if(typeof uri== 'boolean'){iframeHtml += ' src="' + 'javascript:false' + '"';}else if(typeof uri== 'string'){iframeHtml += ' src="' + uri + '"';} }iframeHtml += ' />';jQuery(iframeHtml).appendTo(document.body);return jQuery('#' + frameId).get(0); },createUploadForm: function(id, fileElementId, data){//create form var formId = 'jUploadForm' + id;var fileId = 'jUploadFile' + id;var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>'); if(data){for(var i in data){jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);} }/*old codevar oldElement = jQuery('#' + fileElementId);var newElement = jQuery(oldElement).clone();jQuery(oldElement).attr('id', fileId);jQuery(oldElement).before(newElement);jQuery(oldElement).appendTo(form);*//**** new code* support multigroup、multi fileupload* by keith* 2013-7-11* /**/if(typeof(fileElementId) == 'string'){fileElementId = [fileElementId];}for(var i in fileElementId){//按namevar oldElement = jQuery("input[name="+fileElementId[i]+"]");oldElement.each(function() {var newElement = jQuery($(this)).clone();jQuery(oldElement).attr('id', fileId);jQuery(oldElement).before(newElement);jQuery(oldElement).appendTo(form);});}//set attributesjQuery(form).css('position', 'absolute');jQuery(form).css('top', '-1200px');jQuery(form).css('left', '-1200px');jQuery(form).appendTo('body'); return form;},ajaxFileUpload: function(s) {// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout s = jQuery.extend({}, jQuery.ajaxSettings, s);var id = new Date().getTime() var form = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data));var io = jQuery.createUploadIframe(id, s.secureuri);var frameId = 'jUploadFrame' + id;var formId = 'jUploadForm' + id; // Watch for a new set of requestsif ( s.global && ! jQuery.active++ ){jQuery.event.trigger( "ajaxStart" );} var requestDone = false;// Create the request objectvar xml = {} if ( s.global )jQuery.event.trigger("ajaxSend", [xml, s]);// Wait for a response to come backvar uploadCallback = function(isTimeout){ var io = document.getElementById(frameId);try { if(io.contentWindow){xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;}else if(io.contentDocument){xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;} }catch(e){jQuery.handleError(s, xml, null, e);}if ( xml || isTimeout == "timeout") { requestDone = true;var status;try {status = isTimeout != "timeout" ? "success" : "error";// Make sure that the request was successful or notmodifiedif ( status != "error" ){// process the data (runs the xml through httpData regardless of callback)var data = jQuery.uploadHttpData( xml, s.dataType ); // If a local callback was specified, fire it and pass it the dataif ( s.success )s.success( data, status );// Fire the global callbackif( s.global )jQuery.event.trigger( "ajaxSuccess", [xml, s] );} elsejQuery.handleError(s, xml, status);} catch(e) {status = "error";jQuery.handleError(s, xml, status, e);}// The request was completedif( s.global )jQuery.event.trigger( "ajaxComplete", [xml, s] );// Handle the global AJAX counterif ( s.global && ! --jQuery.active )jQuery.event.trigger( "ajaxStop" );// Process resultif ( s.complete )s.complete(xml, status);jQuery(io).unbind()setTimeout(function(){ try {jQuery(io).remove();jQuery(form).remove(); } catch(e) {jQuery.handleError(s, xml, null, e);} }, 100)xml = null}}// Timeout checkerif ( s.timeout > 0 ) {setTimeout(function(){// Check to see if the request is still happeningif( !requestDone ) uploadCallback( "timeout" );}, s.timeout);}try {var form = jQuery('#' + formId);jQuery(form).attr('action', s.url);jQuery(form).attr('method', 'POST');jQuery(form).attr('target', frameId);if(form.encoding){jQuery(form).attr('encoding', 'multipart/form-data'); }else{ jQuery(form).attr('enctype', 'multipart/form-data'); } jQuery(form).submit();} catch(e) { jQuery.handleError(s, xml, null, e);}jQuery('#' + frameId).load(uploadCallback );return {abort: function () {}}; },uploadHttpData: function( r, type ) {var data = !type;data = type == "xml" || data ? r.responseXML : r.responseText;// If the type is "script", eval it in global contextif ( type == "script" )jQuery.globalEval( data );// Get the JavaScript object, if JSON is used.if ( type == "json" )eval( "data = " + data );// evaluate scripts within htmlif ( type == "html" )jQuery("<div>").html(data).evalScripts();return data;},//jquery在1.4以后不支持handleError handleError: function( s, xhr, status, e ) {// If a local callback was specified, fire itif ( s.error ) {s.error.call( s.context || s, xhr, status, e );}// Fire the global callbackif ( s.global ) {(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );}} })
$.ajaxFileUpload({url : '/**/**.do', //提交的路径secureuri : false, // 是否启用安全提交,默认为falsefileElementId: ["pic1","pic2"], // file控件name属性!!!不是控件idtype: 'post', //当要提交自定义参数时,这个参数要设置成postdataType : 'jsonp',/* data : {fileName : fileName //传递参数,用于解析出文件名}, // 键:值,传递文件名 */success : function(data, status) {//alert("上传成功");},error : function(data, status) {alert(status);}});
<input type="file" id="pic1" name="pic1" accept="image/*"> <input type="file" id="pic2" name="pic2" accept="image/*">
本文地址:https://www.cnblogs.com/niceyoo/p/9404694.html
博客地址:https://www.cnblogs.com/niceyoo