使用Django和jquery的Ajax帖子

时间:2010-12-03 15:31:22

标签: jquery ajax django form-submit

我是所有django的新手,ajax的东西..我在网上阅读了一些教程,我正在尝试制作一个简单的表格,通过ajax发布一些信息。

这是我的模板的jquery部分:

<script type="text/javascript">

 $(document).ready(function () {

  $('#iEventAjax').submit( function()
  {
   var name = $('input[name=event_name]');
   var data = name.val();
   $.ajax({
                                type:"POST",
                                url:"/mediaplanner/edit/",
                                data:data,
                                success: function(msg){
                                        alert(msg);
                                }
                        });
  });

视图代码:

def iEventAjax(request):
        if request.is_ajax():
                return HttpResponse("ok")
        else:
                return render_to_response("iEventSave.html",{})

好吧,当我发布内容时,它返回iEventSave.html而不是给出“ok”消息。 任何建议,哪部分我失败了?

2 个答案:

答案 0 :(得分:5)

此代码发生了什么:

  1. 将处理程序绑定到表单上 提交
  2. 然后提交ajax 返回“ok”的回复
  3. 表单继续以常规HTML格式提交
  4. 第二次提交 返回模板,因为它是一个 GET请求,而不是AJAX
  5. 在jQuery中,你需要从提交函数返回false,或者在事件jQuery Submit Docs上调用preventDefault

    所以:

    $(document).ready(function () {
    
    $('#iEventAjax').submit( function()
    {
     var name = $('input[name=event_name]');
     var data = name.val();
     $.ajax({
                                type:"POST",
                                url:"/mediaplanner/edit/",
                                data:{my_data:data},
                                success: function(msg){
                                        alert(msg);
                                }
                        });
    return false;
    });
    

答案 1 :(得分:0)

您希望var data = name.serialize();创建查询字符串参数。