在閱讀了有關類似主題的其他問題之後,我仍然不明白這段代碼有什麼問題。Django Jquery不需要AJAX請求
我正在測試使用Jquery Form插件的代碼。我在視圖中向模板添加了一個呼叫,以便第一次顯示它,以便用戶可以選擇文件並上傳。但它從不發送AJAX請求,因此視圖中的代碼段不會被執行。儘管這裏沒有顯示,但jQuery庫和jQueryForm插件確實被調用。
Template:
<form id="uploadForm" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input id="fileInput" class="input-file" name="upload" type="file">
{{ form.docfile }}
<span class="upload-message"></span>
<input type="submit" value="Upload" />
</form>
<script>
var message = '';
var options = {
type: "POST",
url: '/upload/file/',
error: function(response) {
message = '<span class="error">We\'re sorry, but something went wrong. Retry.</span>';
$('.upload-message').html(message);
$('fileInput').val('');
},
success: function(response) {
message = '<span class="' + response.status + '">' + response.result + '</span> ';
message = (response.status == 'success') ? message + response.fileLink : message;
$('.upload-message').html(message);
$('fileInput').val('');
}
};
$('#uploadForm').ajaxSubmit(options);
</script>
查看:
def upload(request):
response_data = {}
if request.method == 'POST':
if request.is_ajax:
form = UploaderForm(request.POST, request.FILES)
if form.is_valid():
upload = Upload(
upload=request.FILES['upload']
)
upload.name = request.FILES['upload'].name
upload.save()
response_data['status'] = "success"
response_data['result'] = "Your file has been uploaded:"
response_data['fileLink'] = "/%s" % upload.upload
return HttpResponse(json.dumps(response_data), content_type="application/json")
response_data['status'] = "error"
response_data['result'] = "We're sorry, but kk something went wrong. Please be sure that your file respects the upload conditions."
return HttpResponse(json.dumps(response_data), content_type='application/json')
else:
form = UploaderForm()
return render(request, 'upload.html', {'form': form})
它在第一次做正確調用模板,它顯示的按鈕,它會再次執行腳本,但形式是無效的,所以RESPONSE_DATA是錯誤。
我錯過了什麼?
謝謝,裏卡多
所以點擊「提交」後,ajax根本不運行? – mariodev
如果腳本中沒有數據發送,它應該如何工作? – catherine
嗨裏卡多,你是否設法解決這個問題?我面臨同樣的問題。需要幫助! – g4ur4v