0

我使用下面的函数用 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 发送数据,除了要求之外,我没有任何验证检查。我不知道为什么表格无效?像上面这样发送表单数据是否正确(在????旁边)?感谢您的帮助:

4

1 回答 1

1
  1. 只需发送带有 data = 的发布请求$("#theForm").serialize(),它应该包括 csrftoken 等...
  2. 使用 firebug 或 webkit 检查器(按 F12)来监控网站发出的帖子请求。
  3. 如果服务器响应错误,请使用检查器实际读取响应中的回溯。
  4. 如果服务器没有以错误响应,也请阅读检查器中的响应。

表格似乎无效

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

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

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

于 2012-11-21T08:17:55.390 回答