【问题标题】:django ajax form with jquery带有jquery的django ajax表单
【发布时间】:2012-11-09 09:22:33
【问题描述】:

我使用下面的函数通过 ajax 发送我的表单数据:

$(function() {
        $('#sendButton').click(function(e) {
            e.preventDefault();
            var temp = $("#backupSubmit").serialize();
            $.ajax({
                type: "POST",
                data: temp,
                url: 'backup/',
                success: function(data) {
                     $("#response").html('<p>{% trans "you can download it from here:" %}'+'<a href="'+data+'">{% trans "download" %}</a></p>');
                        $("#response").show();
                }
            });
        });
    });

现在我想使用这个功能:

$("#sendButton").click(function(e){
        e.preventDefault();
        save_data();
        if(save_data()) {
            alert('Saved!');
        } else {
            alert('Failed!');
        }
    });
function save_data() {
        $.post("backup/", {
                    csrfmiddlewaretoken: $("input[name='id_csrfmiddlewaretoken").val(),
                    ???? backup_from: $("#backupSubmit").serialize()
                },
                function(data) {
                     data = json_parse(data);
                    if(data.status=="success") {
                        return true;
                    } else {
                        console.log("status: "+data.status)
                        console.log("error: "+data.error)
                        console.log("POST DATA: "+data.data)
                        $.each(data.data, function(i, n){
                            console.log(">"+i+": "+n);
                        });
                        return false;
                    }
                },
                "json"
        );
    }

但是在看来,表格好像是无效的! 这是我的表格:

BACKUP_CHOICES = (('systemSettings',_("systemSettings")),
                  ('ruleSet',_("ruleSet")))

class backupForm(forms.Form):
    backup_from = forms.MultipleChoiceField(widget=CheckboxSelectMultiple, label=_("backup from"), required=True,
        choices=BACKUP_CHOICES, error_messages={'required': _("Please choose at least one option")})

它通过 post 发送数据,我没有任何验证检查,除了要求。我不知道为什么表格无效?像上面这样发送表单数据是否正确(在????旁边)?感谢您的帮助:

【问题讨论】:

    标签: python django jquery django-templates


    【解决方案1】:
    1. 只需发送带有 data = $("#theForm").serialize() 的 post 请求,它应该包括 csrftoken 等...
    2. 使用 firebug 或 webkit 检查器(按 F12)监控网站发出的帖子请求。
    3. 如果服务器响应错误,请务必使用检查器读取响应中的回溯。
    4. 如果服务器没有响应错误,请务必在检查器中读取响应。

    表格好像无效

    “我们不能停在这里,这是蝙蝠之地。”它是否有效?如果它无效,那么视图应该做出适当的响应,并且 javascript 应该能够使用该响应来通知用户表单无效。

    如果您需要跟踪 Python 代码,请在您的视图中输入import pdb; pdb.set_trace(),以便您可以正确调试它,看看它是否有效以及它在做什么。

    另外,您没有发布您的视图代码。无论如何,我认为第 1 点应该可行。

    【讨论】:

    • 谢谢。我忘了说的是它适用于第一个功能;但第二个却没有。所以我想可能我应该用其他方式发送表单数据。虽然 POST 请求似乎是真的。 (与第一个相同),但表单在第二个中无效!
    • 是的,第二个代码没有发送相同的数据,请参阅此答案的第 1 点 .....
    猜你喜欢
    • 2012-02-22
    • 2011-04-03
    • 2013-07-24
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多