2017-01-12 2 views
0

Ich verwende Ajax, um eine Array-Daten an Django (1.10 unter Python 3.5) zur weiteren Verarbeitung übergeben. Mir ist jedoch aufgefallen, dass das Bestehen kein Erfolg ist und in keiner resultiert. Ich frage mich, an welcher Stelle ich falsch gelaufen bin und mir jemand eine Lösung vorschlagen kann. Danke vielmals. Details sind wie folgt:Django: Array-Daten an Ansichten mit Ajax übergeben

Ajax Abfrage Array final_ele passieren als die Variable final_ele_view anzuzeigen:

$.ajax({ 
    url: "../exportNews/", 
    method: "POST", 
    data: 
    { 
     final_ele_view: 'final_ele', 
     csrfmiddlewaretoken: '{{ csrf_token }}' 
    } 
}); 

Dann in der urls.py:

urlpatterns = [ 
    url(r'^admin/exportNews/', views.exportNews), 
    ... 

Dann in views.exportNews:

from annoying.decorators import ajax_request 
@ajax_request 
@csrf_protect  
def exportNews(request): 
    arr_tag = request.POST.getlist('final_ele_view[]')    
    return HttpResponse(arr_tag) 

Übrigens, ich bemerke nur eine Sache. Auch im Ajax frage ich nach der POST-Methode, aber in views.py, die zeigt, dass die Methode tatsächlich GET ist (durch die Verwendung von return HttpResponse (request.method)). Ist das der Grund für den Fehler und warum passiert das?

+0

* Was ergibt * None? Bitte zeigen Sie die volle Ausgabe oder den Fehler an. –

+0

Es zeigt nur eine leere Webseite mit nichts als Ergebnis (wie ich mit HttpResponse testen). Wenn ich die Anweisung in "arr_tag = request.POST.get ('final_ele_view')" ändere, schreibt die Webseite "None" und nichts mehr. Hilft es? –

+0

Und es gibt keine Fehlermeldung, die ich weder in der Chrome-oder Python-Konsole sehen kann. Oder fehlt mir irgendetwas, um den Fehler zu bekommen? –

Antwort

0

Warum die [] am Ende der fiinal_ele_view[]? Ich wette, die QueryDict zurückgegeben von request.POST weiß nicht, wie mit eckigen Klammern umzugehen, weil das ungültige Python-Syntax ist.

+0

Ich folgte einem Post, dass wenn Sie eine Liste erhalten, Sie [] nach dem Array-Namen anhängen müssen. Ich kann mich irren. Und ich versuche, das [] aus der Anweisung zu entfernen, es zeigt immer noch nichts auf der Webseite als die Ergebnisse –

+0

Gotcha. Habe das nicht bemerkt. Aber sind die Daten eigentlich ein Array? Es sieht so aus, als würdest du nur eine Zeichenfolge senden. – denvaar

+0

Ja, es ist ein Array. Ich habe das überprüft, bevor ich es in Ajax stecke. Ich weiß nicht, ob das Posting es in String ändern würde. Wie auch immer, das Problem, das ich jetzt habe, ist nichts nach dem Posten, weder Liste noch Strings ... –