当前位置: 首页 > 面试题库 >

如何使用AJAX和jQuery发布Django表单

施刚毅
2023-03-14
问题内容

我已经检查了很多有关django AJAX表单的教程,但是每个教程都告诉您一种实现方法,它们都不是简单的,而且由于我从未使用过AJAX,所以我有点困惑。

我有一个名为“ note”的模型,它的模型形式,并且在模板内,我需要每次note元素发送stop()信号(来自jQuery
Sortables)时django更新对象。

我当前的代码:

views.py

def save_note(request, space_name):

    """
    Saves the note content and position within the table.
    """
    place = get_object_or_404(Space, url=space_name)
    note_form = NoteForm(request.POST or None)

    if request.method == "POST" and request.is_ajax:
        msg = "The operation has been received correctly."          
        print request.POST

    else:
        msg = "GET petitions are not allowed for this view."

    return HttpResponse(msg)

JavaScript:

function saveNote(noteObj) {
    /*
        saveNote(noteObj) - Saves the notes making an AJAX call to django. This
        function is meant to be used with a Sortable 'stop' event.
        Arguments: noteObj, note object.
    */
    var noteID = noteObj.attr('id');

    $.post("../save_note/", {
        noteid: noteID,
        phase: "Example phase",
        parent: $('#' + noteID).parent('td').attr('id'),
        title: $('#' + noteID + ' textarea').val(),
        message: "Blablbla",
    });
}

当前代码从模板获取数据并将其打印在终端中。我不知道该如何处理这些数据。我见过有人通过jqueryforms管理数据以将数据发送到django。

如何访问AJAX发送的数据并更新便笺对象?


问题答案:

由于您使用的是jQuery,为什么不使用以下内容:

<script language="JavaScript">
    $(document).ready(function() {
        $('#YOUR_FORM').submit(function() { // catch the form's submit event
            $.ajax({ // create an AJAX call...
                data: $(this).serialize(), // get the form data
                type: $(this).attr('method'), // GET or POST
                url: $(this).attr('action'), // the file to call
                success: function(response) { // on success..
                    $('#DIV_CONTAINING_FORM').html(response); // update the DIV 
                }
            });
            return false;
        });
    });
</script>

编辑

正如评论中指出的那样,有时上述方法无效。因此,请尝试以下操作:

<script type="text/javascript">
    var frm = $('#FORM-ID');
    frm.submit(function () {
        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                $("#SOME-DIV").html(data);
            },
            error: function(data) {
                $("#MESSAGE-DIV").html("Something went wrong!");
            }
        });
        return false;
    });
</script>


 类似资料:
  • 问题内容: 我正在尝试在Django中使用jQuery / AJAX发布数据,并且遇到了麻烦。当我运行下面的代码并单击“测试”按钮时,整个页面将再次重新加载,这不是我想要的(这就是我使用AJAX的原因)。 我也无法确认AJAX请求正在进入Django视图。 编辑:我对return false和进行了编辑。无法加载新页面,但仍无法在该字段中看到更新的文本。我不确定是否正在发送数据。我在控制台中看到:

  • 问题内容: 我有以下代码,但是当我从页面重定向提交时。我希望能够使用jquery / ajax向其发布内容,以便提交时页面不会刷新。有人可以给我看一个jsfiddle演示吗? 问题答案: 看一下jQuery :

  • 问题内容: 我正在尝试在Django中使用jQuery / AJAX发布数据,并且遇到了麻烦。当我运行下面的代码并单击“测试”按钮时,整个页面会再次重新加载,这不是我想要的(这就是我使用AJAX的原因)。 我也无法确认AJAX请求正在进入Django视图。 编辑: 我对return false和进行了编辑。无法加载新页面,但仍无法在该字段中看到更新的文本。我不确定是否正在发送数据。我在控制台中看到

  • 问题内容: 我正在使用tinyMCE通过AJAX进行文本区域和POST表单。 但是,当我尝试保存textarea值时,第一次单击时将使用旧值,而第二次单击时将使用更新的值。 我尝试使用,但没有用。 我也尝试过,但它仍然需要旧的价值观。 我的代码如下。 请帮助,任何帮助将不胜感激 问题答案: 用这个代替

  • 问题内容: 我的应用程序中的一个页面具有一组链接,这些链接在单击时会基于TableTools jQuery插件发布表单数据。我想在一个新窗口中打开这个新页面。关于最佳方法的任何想法?我宁愿不将所有操作链接都更改为单个表单和用法。我尝试过调用一个新窗口以成功打开,然后将数据写入此页面,但这没有用。请帮忙! HTML: Javascript: 问题答案: 找到了答案: jQuery.ajax成功回调函

  • 问题内容: 我想在Zepto或Jquery中用$ .ajax发布一个对象数组。两者都表现出相同的奇数错误,但我找不到我做错的事情。 使用“ RestEasy”之类的测试客户端发送数据时,数据会保存到服务器,并且我可以在浏览器的网络面板中看到请求被篡改,因此我相信JS是罪魁祸首。 如果我将对象数组作为POST的data属性发送,则不能正确发送它们。 数据对象: 请求: 在浏览器中看到的请求正文: 可