Javascript 在服务器端代码命中之前完成AjaxUpload获取

Javascript 在服务器端代码命中之前完成AjaxUpload获取,javascript,jquery,ajax-upload,Javascript,Jquery,Ajax Upload,我正在编写一些使用Asp.net和ajax的遗留代码,在这些代码中,我们可以使用一种功能上传pdf。为了上传文件,我们的旧代码使用AjaxUpload,但我观察到AjaxUpload的一些奇怪行为,即在服务器端代码上传实际文件之前调用onComplete事件,因此,尽管文件上传成功,但用户在屏幕上仍然收到一条错误消息,说上传失败 这里最奇怪的事情是,同样的代码在上周之前运行良好 代码: initFileUpload:函数(){ 调试器; 新AjaxUpload('aj-assetfile'{ 操

我正在编写一些使用Asp.net和ajax的遗留代码,在这些代码中,我们可以使用一种功能上传pdf。为了上传文件,我们的旧代码使用AjaxUpload,但我观察到AjaxUpload的一些奇怪行为,即在服务器端代码上传实际文件之前调用onComplete事件,因此,尽管文件上传成功,但用户在屏幕上仍然收到一条错误消息,说上传失败

这里最奇怪的事情是,同样的代码在上周之前运行良好

代码:

initFileUpload:函数(){
调试器;
新AjaxUpload('aj-assetfile'{
操作:'/Util/FileUploadHandler.ashx?type=asset&signup=False&oldfile='+assetObj.AssetPath+'&as='+assetObj.AssetID,
//操作:ML.Assets.handlerPath+'?操作=上载文件',
名称:“AccountSignupUploadContent”,
onSubmit:函数(文件,ext){
ML.Assets.isupload=true;
ML.Assets.toggleAsfMask(真);
//当用户选择文件时,更改按钮文本
$asffile.val(“上传”);
$astfileerror.hide();
//如果您希望一次只允许上载一个文件,
//您可以禁用上载按钮
这个。disable();
//上传->上传->上传。。。
ML.Assets.interval=window.setInterval(函数(){
var text=$asffile.val();
如果(文本长度<13){
$asffile.val(文本+');
}否则{
$asffile.val(“上传”);
}
}, 200);
//如果url字段块可见
如果($asseturlbkl.is(':visible')){
$asfurl.val(“”);//重置url的值
$asfurl.removeClass('requiref error');//删除require字段类
$ASFURRERROR.hide();//隐藏错误
}
},
onComplete:函数(文件,响应JSON){
调试器;
ML.Assets.toggleAsfMask(假);
ML.Assets.isupload=false;
clearInterval(ML.Assets.interval);
这个.enable();
var成功=false;
var responseMsg='';
试一试{
var response=JSON.parse(responseJSON);
如果(response.status=='success'){/(response.getElementsByTagName('status')[0]。textContent=='success'){
成功=真实;
}否则{
成功=错误;
responseMsg=':'+response.message;
}
}捕获(e){
成功=错误;
}
如果(成功){
assetObj.AssetMimeType=response.mimetype;
$asffile.val(response.path);
$asffile.valid();//清除错误
ML.Assets.madeChanges();
if(ML.Assets.saveAfterUpload){//if用户在上传时提交了表单
ML.Assets.saveAsset();//运行保存回调
}
}else{//错误
assetObj.AssetMimeType=“”;
$asffile.val(“”);
$astfileerror.show().text('Upload failed'+responseMsg);
//如果url字段块可见且类型不是免费提供。
if($asseturlbkl.is(':visible')&&this.type!==undefined&&assetObj.AssetType!=this.type.freefore){
$asfurl.addClass('requiref');//删除require字段类
}
ML.Assets.hideLoader();
}
}
});
}

我也面临同样的问题,但我通过对插件进行一些小改动来解决它

当https或http页面上的“iframeSrc”设置为“javascript:false”时,Chrome现在似乎会取消请求。将其更改为“about:blank”似乎可以解决问题

旧代码:

var iframe = toElement('<iframe src="javascript:false;" name="' + id + '" />');
var-iframe=toElement(“”);
带有chagnes的新代码:

var iframe = toElement('<iframe src="about:blank;" name="' + id + '" />');
var-iframe=toElement(“”);
更改代码后,它工作正常。我希望它也能为您工作。:)


参考资料(更多详情):

我知道了原因,这是因为chrome更新。同样的代码在chrome的旧版本中运行良好。
var iframe = toElement('<iframe src="about:blank;" name="' + id + '" />');