【发布时间】:2021-09-29 19:13:24
【问题描述】:
我为一些数据处理编写了一个 django 应用程序。在某些情况下,可能需要几分钟才能等待处理完成。因此,我想在用户单击“执行”后立即在页面上显示一个微调器,并在整个处理过程中,直到页面刷新以显示结果... 我遵循了一个教程 (here),我可以在其中设置应用程序并在页面加载时显示微调器。但这并不是我想要的。
以下 JS 代码来自视频并显示微调器,直到页面加载:
const spinnerbox = document.getElementById('spinner-box')
//console.log(spinnerbox)
$.ajax({
type: 'GET',
url: '/',
success : function(response){
spinnerbox.classList.add('not-visible')
console.log('response', response)
},
error : function(error){
console.log(error)
}
})
我想我需要修改这段代码,类型应该是“POST”,但我不知道要在脚本旁边添加什么。 感谢您的帮助!
[编辑] 我可以使用这段代码更进一步:
const spinnerbox = document.getElementById('spinner-box') const submitbox = document.getElementById('submit-box')
submitbox.addEventListener('mouseup', ()=>{ spinnerbox.classList.remove('不可见')
$.ajax({
type: 'POST',
url: '/',
success : function(response){
spinnerbox.classList.add('not-visible')
console.log('response is success')
},
error : function(error){
console.log('error')
console.log(error)
//spinnerbox.classList.add('not-visible')
},
// shows the loader element before sending.
beforeSend: function() {
console.log('In beforeSend...')
//show spinner
spinnerbox.classList.remove('not-visible')
},
// hides the loader after completion of request, whether successfull or failor.
complete: function() {
console.log('In complete...')
//spinnerbox.classList.add('not-visible')
},
})
})
但我猜这不干净。当我使用浏览器进行检查时,会发生以下情况:
In beforeSend... main.js:24:21
XHRPOSThttp://127.0.0.1:8000/
error main.js:18:21
Object { readyState: 0, getResponseHeader: getResponseHeader(e), getAllResponseHeaders: getAllResponseHeaders(), setRequestHeader: setRequestHeader(e, t), overrideMimeType: overrideMimeType(e), statusCode: statusCode(e), abort: abort(e), state: state(), always: always(), catch: catch(e)
, … }
abort: function abort(e)
always: function always()
catch: function catch(e)
done: function add()
fail: function add()
getAllResponseHeaders: function getAllResponseHeaders()
getResponseHeader: function getResponseHeader(e)
overrideMimeType: function overrideMimeType(e)
pipe: function pipe()
progress: function add()
promise: function promise(e)
readyState: 0
setRequestHeader: function setRequestHeader(e, t)
state: function state()
status: 0
statusCode: function statusCode(e)
statusText: "error"
then: function then(t, n, r)
<prototype>: Object { … }
main.js:19:21
In complete...
塞巴斯蒂安
【问题讨论】:
标签: javascript jquery django ajax