如何在Djang中使用Ajax提交表单

2024-10-01 09:39:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Ajax提交一个HTML Form,但没有收到任何成功或失败的警报。

索引.html

<form method="post" class="needs-validation" enctype="multipart/form-data"  action="/upload/" id="fupload">

    <div class="custom-file">
        <input type="file" class="custom-file-input" id="data_files" name="data_files" multiple required>
        <label class="custom-file-label" for="data_files">Choose files</label>
    </div>

    <button type="submit">Upload files</button>

</form>

<script type="text/javascript">
    var frm = $('#fupload');
    frm.submit(function () {
        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                alert('Form Submitted');
            },
            error: function(data) {
                alert('Form submission failed');
            }
        });
        return false;
     });

视图.py

^{pr2}$

你知道为什么它不起作用吗


Tags: formiddatatypecustomfunctionactionfiles
1条回答
网友
1楼 · 发布于 2024-10-01 09:39:20

尝试更改以下内容:

  • 删除action。在
  • 将按钮更改为type="button",并添加一个事件侦听器

    <form method="post" class="needs-validation" id="fupload">
    
        <div class="custom-file">
            <input type="file" class="custom-file-input" id="data_files" name="data_files" multiple required>
            <label class="custom-file-label" for="data_files">Choose files</label>
        </div>
    
        <button type="button" id="upload-files-btn">Upload files</button>
    </form>
    
    <script type="text/javascript">
        var frm = $('#fupload');
        var btn = $('#upload-files-btn');
        btn.bind('click', handleClick);
        var formData = new FormData(); // Use FormData instead
        formData.append('file', frm.files[0], frm.files[0].name) // The first argument is the 'key' of the form data so change it to whatever works.
        var handleClick = function (event) {
            event.preventDefault();
            $.ajax({
                type: frm.attr('method'),
                url: '/upload/',
                data: formData,
                contentType: false,  // add this to indicate 'multipart/form-data'
                success: function (data) {
                    alert('Form Submitted');
                },
                error: function(data) {
                    alert('Form submission failed');
                }
             });
        }
    </script>
    

相关问题 更多 >