2016-04-10 8 views
0

Ich habe ein Modal, wo ich ein Formular im Inneren rendern. Bevor es öffnet, fordert es den Inhalt von einer Ansichtfunktion an. Jetzt möchte ich zusätzliche Attribute übergeben, die ich in der ajax.success: function behandeln kann.Render-Formular in Ansicht und fügen Sie zusätzliche Daten als JSON

Ajax:

function task_form() { 
$.ajax({ 
    url : "/somewhere/" , // the endpoint 
    type : "GET", // http method 

    // handle a successful response 
    success : function(data) { 
    if(data.attr == "whatever"){ 
     do this 
    }else{ 
     do that 
    }}, 

    // handle a non-successful response 
    error : function(xhr,errmsg,err) { 
       errorstuff 
    } 
}); 
}; 

Ausblick:

def someview(request): 
if request.method == 'POST': 
    print("shouldnt happen") 
else: 
    form = SomeForm() 
    response_data = {'form': form} 

return render(request, 'formToInsert.html', response_data) 

ich versuchte, mit JsonResponse(), aber ich bin nicht sicher, wie die html in einem dict dort zu setzen und wie man Verwenden Sie es auf der js-Seite.

Antwort

0

Ihre Ansicht sollte dies tun:

def someview(request): 
if request.method == 'POST': 
    print("shouldnt happen") 
else: 
    form = SomeForm() 
    response_data = {'form': form} 

return HttpResponse(json.dumps(response_data), content-type="application/json") 

obwohl ich nicht sicher bin, ob SomeForm() ist serializable vi der 'json' Paket. Andernfalls könnten Sie wahrscheinlich das Django-Paket serialize verwenden, um dasselbe zu tun.

+0

Die Serialisierung ist im Grunde mein Problem. Was ist der beste Weg, dies zu tun? Und wie würdest du die Antwort in html im ajax.success "deserialisieren"? Oder gibt es einen super einfachen Weg, den ich nicht sehe? : D – qwertasyx

+0

Sie müssen Code anzeigen, den Sie ausprobiert haben. Hast du meine Antwort versucht? Im Javascript würden Sie den Datentypen: 'json' setzen, und dann sollten Sie in der Lage sein, die zurückgegebenen Daten wie jedes andere json-Objekt zu verwenden –

Verwandte Themen