- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用拖放来触发上传,因此我无法简单地捕获 findupload('send') 的返回值来获取 jqXHR。
因此,在“fileuploadsend”事件中,我尝试从数据对象中获取 jqXHR 元素,但 data.jqXHR 似乎未定义?
$('#fileupload')
.fileupload({
...
}).bind('fileuploadsend', function (e, data) {
console.log(data)
console.log(data.jqXHR)
});
数据对象的输出显示 jqXHR 元素存在并且是一个如下所示的对象:
jqXHR: Object
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseText: "[{"url": "/media/pictures/392_frm_20130412081933_d3fee37c7a654dfca066ca3fa389b491.jpg", "filename": "waves_1600.jpeg", "sortDate": null, "albumId": 67, "published": false, "source_id": "pfi392", "thumbnailUrl": "/media/cache/a1/c1/a1c1d4f74614cf041b29e315a1f9a08a.jpg", "id": 499}]"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object
但是,无论出于何种原因,console.log(data.jqXHR) 只是给出了未定义。
如果我运行 for (k in data) { console.log(k) }
那么 jqXHR 在列表中就看不到:
disabled
create
dropZone
pasteZone
replaceFileInput
singleFileUploads
sequentialUploads
forceIframeTransport
multipart
recalculateProgress
progressInterval
bitrateInterval
formData
add
processData
contentType
cache
url
dataType
fileInput
files
originalFiles
paramName
submit
form
type
formAcceptCharset
uploadedBytes
headers
data
blob
xhr
_bitrateTimer
最佳答案
我使用了 jquery-fileupload 的 basic plus UI 版本。
首先,将 jquery.fileupload.ui.js 的一部分粘贴到我的 javascript 中文件上传源。并修改了部分内容。
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
url: '/common/fileupload',
// pasted this part, If the file transfer successful
// 파일 전송에 성공하면
done: function (e, data) {
if (e.isDefaultPrevented()) {
return false;
}
var that = $(this).data('blueimp-fileupload') ||
$(this).data('fileupload'),
getFilesFromResponse = data.getFilesFromResponse ||
that.options.getFilesFromResponse,
files = getFilesFromResponse(data),
template,
deferred;
if (data.context) {
data.context.each(function (index) {
var file = files[index] ||
{error: 'Empty file upload result'};
deferred = that._addFinishedDeferreds();
that._transition($(this)).done(
function () {
var node = $(this);
template = that._renderDownload([file])
.replaceAll(node);
that._forceReflow(template);
that._transition(template).done(
function () {
data.context = $(this);
that._trigger('completed', e, data);
that._trigger('finished', e, data);
deferred.resolve();
// It succeeded in using jqXHR, I was need of file auto increment id,
console.log("fileuploadsuccess", data.jqXHR.responseJSON.files_info[0]);
// and I called custom callback function.
fn_file_callback("fileuploadsuccess", e, data.jqXHR.responseJSON.files_info[0]);
}
);
}
);
});
} else {
template = that._renderDownload(files)[
that.options.prependFiles ? 'prependTo' : 'appendTo'
](that.options.filesContainer);
that._forceReflow(template);
deferred = that._addFinishedDeferreds();
that._transition(template).done(
function () {
data.context = $(this);
that._trigger('completed', e, data);
that._trigger('finished', e, data);
deferred.resolve();
}
);
}
},
// then pasted this part.. If the file remove done.
// 파일을 삭제하면
destroy: function (e, data) {
if (e.isDefaultPrevented()) {
return false;
}
var that = $(this).data('blueimp-fileupload') ||
$(this).data('fileupload'),
removeNode = function () {
that._transition(data.context).done(
function () {
$(this).remove();
that._trigger('destroyed', e, data);
// add here, I called custom callback function about file deletion.
fn_file_callback("filedeletesuccess", e, data.url.replace("/common/deleteFile/", ""));
}
);
};
if (data.url) {
data.dataType = data.dataType || that.options.dataType;
$.ajax(data).done(removeNode).fail(function () {
that._trigger('destroyfailed', e, data);
});
} else {
removeNode();
}
}
});
From here the rest.
// Enable iframe cross-domain access via redirect option:
$('#fileupload').fileupload(
'option',
'redirect',
window.location.href.replace(
/\/[^\/]*$/,
'/cors/result.html?%s'
)
);
if (window.location.hostname === 'localhost:8080') {
// Demo settings:
$('#fileupload').fileupload('option', {
url: '/common/fileupload',
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
maxFileSize: 999000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
});
// Upload server status check for browsers with CORS support:
if ($.support.cors) {
$.ajax({
url: '/common/fileupload',
type: 'HEAD'
}).fail(function () {
$('<div class="alert alert-danger"/>')
.text('Upload server currently unavailable - ' +
new Date())
.appendTo('#fileupload');
});
}
} else {
// Load existing files:
$('#fileupload').addClass('fileupload-processing');
$.ajax({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: $('#fileupload').fileupload('option', 'url'),
dataType: 'json',
context: $('#fileupload')[0]
}).always(function () {
$(this).removeClass('fileupload-processing');
}).done(function (result) {
$(this).fileupload('option', 'done')
.call(this, $.Event('done'), {result: result});
});
}
祝你好运!
关于javascript - 在jquery文件上传插件的fileuploadsend事件中检索jqXHR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966643/
我使用: var jqXHR = $.ajax(settings); jqXHR.success(function(result){}); jqXHR.error(function(result){}
我将 jquery ajax 对象存储在一个数组中,这样我就可以根据用户触发的事件手动取消调用(如果它没有返回)。这些是我希望运行很长时间的 ajax 调用。 JavaScript var ajaxC
正如标题已经提到的,有没有办法检查一个变量是否是真正的 jqXHR? 我的意思是(虚构的): var resource = $.get('/resource'); if (resource insta
我最近在 jQuery 网站上看到了弃用通知。 Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
我正在尝试为 jquery 文件上传执行取消按钮(http://blueimp.github.io/jQuery-File-Upload/)。 我的代码: var jqXHR = $('#fileup
我正在创建一个 ajax 实用程序来与我的服务器方法交互。我想利用 jQuery.ajax() 调用返回的对象的 jQuery 1.5+ 延迟方法。情况如下。 服务器端方法始终返回 JSON 对象:
我是 AJAX/Jquery 的新手,并且在我的程序上创建了错误响应,但我遇到了错误如何出现的问题,主要是 jqXHR.responseText。 error: function(jqXHR, tex
对于我的 jQuery 应用程序,我想实现延迟加载。因此,我创建了一个对象,其中包含我所有的 jqXHR promise 。 当我现在将所有内容分组到一个声明中时 var resultset = ne
在我的服务器上(用 Go 编写),我发回了一个自定义 header 字段,当我进行 ajax 调用时我试图从中读取该字段。 $.ajax({ url: url, suc
我正在使用 Backbone 开发一个新应用程序,但尚未编写后端 API,因此我正在尝试使用项目本地的 JSON 数据文件。我将其位置设置为 urlRoot,并且能够获取它并接收回 jqXHR 对象。
jqXHR.status 的可能值是什么? 到目前为止,我可以看到以下内容: if (jqXHR.status === 0) { msg = 'Network Problem'; } else if
在我的 ajax 调用中,responseHeader('Location') FF 始终为空。有谁能够帮助我?顺便说一下,它是一个 CORS。 $.ajax({ ur
我有一个可以引发异常的 Java Spring MVC Controller 。我有一个 @ExceptionHandler 设置来处理这些错误,我想用它来将异常的消息返回给调用者。 服务器代码是:
在 jQuery.ajax() 调用 jqXHR.getAllResponseHeaders() 后,不会返回所有 header 。服务器响应以下 header : Connection: keep-
来自deferred.fail() page : Description: Add handlers to be called when the Deferred object is rejected
我正在使用 JQuery 的 $.when 和 $.get 来获取一些数据并对其执行某些操作。当获取它或对其执行某些操作时出现错误时,我想处理该错误,并根据我正在获取的数据/在哪个路径上获取它,以不同
基本上我使用 jqXHR 和 asmx。如果可能的话我想这样做; 总的来说,在每个页面中,我都会使用 6-7 个带有同步或异步的 ajax 调用,具体取决于它是哪种方法。但是当其中一个出现错误时,我想
我正在尝试使用 jquery 提交登录表单(这是一个弹出式 div)。如果表单验证失败,那么我只想在弹出 div 上显示错误消息,并在 ajax 调用进入错误函数时停止关闭该表单(弹出窗口),因为页面
我有以下 Ajax 调用: $.ajax({ type: 'POST', contentType: 'application/json', url: r
我有 SendRequest 对象,该类具有类似的功能 request: function(args) { return $.ajax.apply
我是一名优秀的程序员,十分优秀!