使用Django和jquery的Ajax帖子

iva*_*123 0 django ajax jquery 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);
                                }
                        });
  });
Run Code Online (Sandbox Code Playgroud)

和视图代码:

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

好吧,当我发布一些东西时,它返回iEventSave.html而不是给出"ok"消息.任何建议,哪部分我失败了?

Dav*_*ler 5

这段代码发生了什么:

  1. 您将处理程序绑定到提交时的表单
  2. 然后你提交一个ajax响应,返回"ok"
  3. 表单继续作为常规HTML表单提交
  4. 第二次提交返回模板,因为它是GET请求,而不是AJAX

在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;
});
Run Code Online (Sandbox Code Playgroud)