Аякс пост с Джанго и JQuery - PullRequest
       1

Аякс пост с Джанго и JQuery

0 голосов
/ 03 декабря 2010

Я новичок во всех вещах 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 вместо того, чтобы выдавать сообщение "ОК". Любые предложения, какую часть я терплю неудачу?

Ответы [ 2 ]

5 голосов
/ 03 декабря 2010

Что происходит с этим кодом:

  1. Вы связываете обработчик с формой на отправить
  2. Затем вы отправляете ajax ответ, который возвращает «хорошо»
  3. Форма продолжает отправляться как обычная HTML-форма
  4. Вторая подача возвращает шаблон, потому что это ПОЛУЧИТЕ запрос, не AJAX

В jQuery вам нужно либо вернуть false из функции отправки, либо вызвать warnDefault для события jQuery Submit Docs

Итак:

$(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;
});
0 голосов
/ 03 декабря 2010

Вы хотите сделать var data = name.serialize();, чтобы создать параметр строки запроса.

...