2010-12-13 9 views
0

Ich verwende einen AJAX-Aufruf Daten vom Server zu erhalten:Django Parsing Argumente

$.ajax({ 
type: 'POST', 
url: '/simple/gd/', 
dataType: 'json', 
data: {t : "PL"}, 
success: function(data) { 
var newd = data['t']; 
    alert('Load was performed: ' + newd); 
} 
}); 

Auf dem Server urls.py ist:

(r'^simple/gd/(?P<data>.*)$', 'simple.views.getData'), 

Die URL, die auf den Server bekommen haben ist http:/localhost/einfach/gd /? t = PL

Aber aus irgendeinem Grund kann ich getData (Anfrage, Daten) nicht mit "? t = PL" oder mit "t = PL "als 'Daten' Parameter. "Daten" sind immer leer.

Was mache ich falsch?

Antwort

1

Wenn Sie den Typ: 'POST' verwenden, werden die Daten nicht als Abfrage an die URL angehängt Zeichenfolge.

Stattdessen ist es im POST-Wörterbuch des Anforderungsobjekts enthalten.

Also, um etwas zurück zu übergeben, die für Ihre Warnung Sie feuert brauchen einen String zu machen, die als JSON-Daten etwas entlang der Linien von interpretiert werden kann:

(r'^simple/gd/$', 'simple.views.getData'), 

def getData(request): 
    posted_t = request.POST['t'] 
    # Do some stuff with posted_t 
    server_side_var = "Yay" 
    return HttpResponse(u"{t:%s}" % server_side_var) 
0

Das ist, weil t=PL nicht Teil des Pfades ist, ist es der Abfrage-String (der Pfad, grob gesagt, ist das Bit vor den ?, das Query-String ist das Bit nach den ?).

Persönlich würde ich Ihre urls.py wie folgt empfehlen Wechsel:

(r'^simple/gd/$', 'simple.views.getData'), 

Dann passen Sie Ihre View-Funktion von so etwas wie:

def getData(request, data): 
    print data 

zu so etwas wie:

def getData(request): 
    print request.GET.get('t', None) 
+0

Was passiert, wenn meine ‚Daten‘ komplexer ist? Zum Beispiel: data = {t: "ich", m: {a: "du", b: "wir"}} Ich möchte die ganzen "Daten" wie sie sind, und analysiere sie mit Python – Alex

+0

Wenn du Daten im Pfad haben willst, dann können es nur flache Daten sein (außer du wirst sehr clever werden!)/Me/du/wir/- was ist das Problem beim Lesen einer POST-Variablen? – PhoebeB

Verwandte Themen