gpt4 book ai didi

javascript - 如何通过单击 'Cancel' 按钮取消文件上传

转载 作者:行者123 更新时间:2023-11-30 07:10:19 25 4
gpt4 key购买 nike

我有一个表单,其中包含表单中的文件输入,更重要的是,还有一个取消文件上传的取消按钮:

var $fileImage = $("<form action='imageupload.php' method='post' class='imageuploadform' ...><label>" + 

"Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label>" +

"<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +

"</p><p class='imagef1_cancel' align='center'><label>" +

"<input type='button' name='cancelImageBtn' class='cancelimage' value='Cancel' /></label>" +
"</p></form>");

现在我已经完成了将文件上传到服务器等所有操作。但是我有一个问题。

我的问题是我不知道如何取消和上传。目前,如果用户点击“取消”按钮,则什么也不会发生。我想要发生的是,如果用户单击“取消”按钮,那么它将导航到“stopImageUpload()”函数并停止文件上传。但是我该怎么做呢?

下面是我尝试创建取消按钮功能,但是当单击“取消”按钮时,没有任何反应。

   $(".cancelimage").on("click", function(event) {
console.log("clicked");
event.preventDefault();
stopImageUpload(success);
});

下面是完整的代码,显示了取消按钮功能的位置以及开始上传和停止上传文件的功能:

          function startImageUpload(imageuploadform){

$(imageuploadform).find('.imagef1_upload_process').css('visibility','visible');
sourceImageForm = imageuploadform;

$(".cancelimage").on("click", function(event) {
console.log("clicked");
event.preventDefault();
stopImageUpload(success);
});

return true;
}

function stopImageUpload(success){

var result = '';
if (success == 1){
result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
}

else {
result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
}

$(sourceImageForm).find('.imagef1_upload_process').css('visibility','hidden');
$(sourceImageForm).find('.imagef1_upload_form').css('visibility','visible');


return true;
}

最佳答案

这是给可能在这里借钱的人的答案。 (没有完全回答这个问题,因为它已经太老了)

我会回答你如何实现取消上传,或者更多的取消ajax请求。许多应用程序都可能需要它。

使用公理

您可以使用取消 token 取消请求。

The axios cancel token API is based on the withdrawn cancelable promises proposal.

您可以使用 CancelToken.source 工厂创建取消 token ,如下所示:

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
cancelToken: source.token
}).catch(function (thrown) {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// handle error
}
});

axios.post('/user/12345', {
name: 'new name'
}, {
cancelToken: source.token
})

并触发取消

// cancel the request (the message parameter is optional)
source.cancel('Operation canceled by the user.');

您还可以通过将执行函数传递给 CancelToken 构造函数来创建取消 token :

const CancelToken = axios.CancelToken;
let cancel;

axios.get('/user/12345', {
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel = c;
})
});

// cancel the request
cancel();

Note: you can cancel several requests with the same cancel token.

文档 https://github.com/axios/axios#cancellation

使用 XMLHttpRequest:

我们使用 xhr 对象的 abort() 方法。

var xhr = new XMLHttpRequest(),
method = "GET",
url = "https://developer.mozilla.org/";
xhr.open(method, url, true);

xhr.send();

if (OH_NOES_WE_NEED_TO_CANCEL_RIGHT_NOW_OR_ELSE) {
xhr.abort();
}

文档 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/abort

关于javascript - 如何通过单击 'Cancel' 按钮取消文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com