在Django中,两个表单和Ajax提交输入

时间:2019-09-23 10:28:16

标签: javascript html django

这是我第三次提出这个问题,很遗憾,没有专家可以回答这个简单的问题。

在没有JavaScript代码的情况下,view.py中的方法对于保存和计算都非常有效,两个提交一个表单即可。但是,当我使用ajax时,它会失败(由于e.preventDefault();),这是我的代码:

html

<form method="post" id="idForm" name="fmr1" action = "/myproject/save/" 
enctype="multipart/form-data">
....
<input type="submit" name="save" value="Save">
<input type="submit" name="calc" value="Calculate">
</form>

js

$("#idForm").submit(function(e) {
    e.preventDefault(); // avoid to execute the actual submit of the form.
    var frm = $('#idForm');

$.ajax({
    type: frm.attr('method'),
    url: frm.attr('action'),
    data: frm.serialize(),
    success: function (data) {
        alert(data.mylist)
    },
    error: function (data) {
        alert("ajax fails")
    }
    });

});

观看次数

if request.method == 'POST' and 'calc' in request.POST:
    print("runs calc form")
    mylist= [5]
    return JsonResponse({'mylist':mylist})

问题

现在,问题出在request.POST中的“'calc'”中,因此当我向表单添加ajax或id =“ idForm”时,它无法运行。

我还需要运行“保存”,因此我需要在request.POST中添加“ calc”。

两者都必须在视图的一个方法中运行。

javascript(e.preventDefault();)阻止其正常运行的原因可能是什么?

如何解决?

1 个答案:

答案 0 :(得分:2)

因为没有人回答这个问题。使用ajax时,两个按钮的一种形式不起作用,我使用了一个按钮和一个输入:

    <input type="submit"  name="save" id="save" value="Save">
    <button type="button" onclick="sendData()">Calculate</button>

这对我有用。在视图中,我实现了两种方法。