2010-12-03 17 views
0

Ich bin neu zu allen Django, Ajax Dinge .. Ich lese ein paar Tutorials im Netz und ich versuche, ein einfaches Formular, das einige Informationen über Ajax veröffentlicht. HierAjax Post mit Django und Jquery

ist jquery Teil meiner Vorlage:

<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); 
           } 
         }); 
    }); 

Und der Blick Code:

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

Nun, wenn ich etwas schreiben, es gibt iEventSave.html statt geben die "ok" Botschaft. Irgendwelche Vorschläge, welchen Teil versage ich?

Antwort

5

Was mit diesem Code geschieht:

  1. Sie binden einen Handler in das Formular auf einreichen
  2. Sie dann eine Ajax Antwort vorlegen, die „ok“
  3. Das Formular gibt weiterhin einreichen als normales HTML-Formular
  4. Die zweite Einreichung gibt die Vorlage zurück, weil es eine GET-Anfrage ist, nicht AJAX

In jQuery müssen Sie entweder aus der einreichen Funktion false zurück, oder rufen Sie prevent auf das Ereignis jQuery Submit Docs

So:

$(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

Sie möchten var data = name.serialize(); erstellen, um einen Abfragezeichenfolgenparameter zu erstellen.