2010-12-13 26 views
0

J'utilise un appel AJAX pour obtenir des données à partir du serveur:arguments d'analyse syntaxique Django

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

Sur le serveur, urls.py est:

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

L'URL qui devient au serveur est http:/localhost/simple/gd /? t = PL

Mais pour une raison quelconque, je ne peux pas faire getData (demande, données) à appeler avec "? t = PL" ou avec "t = PL "comme paramètre 'data'. 'data' est toujours vide.

Qu'est-ce que je fais mal?

Répondre

1

Si vous utilisez type: 'POST', les données ne sont pas ajoutées à l'URL en tant que requête chaîne. Au lieu de cela, il est inclus dans le dictionnaire POST de l'objet de requête.

Ainsi, afin de passer quelque chose qui déclenche votre alerte vous devez rendre une chaîne qui peut être interprété comme données JSON quelque chose le long des lignes de:

(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

C'est parce que t=PL ne fait pas partie du chemin, c'est la chaîne de requête (le chemin, grosso modo, est le peu avant la ?, la chaîne de requête est le bit après la ?).

Personnellement, je recommande de changer votre urls.py comme suit:

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

Ensuite, réglez votre fonction de vue de quelque chose comme:

def getData(request, data): 
    print data 

à quelque chose comme:

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

Que faire si mon « données » est plus complexe? Par exemple, data = {t: "moi", m: {a: "vous", b: "nous"}} Je voudrais obtenir l'ensemble des "données" telles quelles, et les analyser avec python – Alex

+0

Si vous voulez des données dans le chemin, alors il ne peut s'agir que de données à plat (sauf si vous allez devenir très intelligent!)/Moi/vous/nous/- quel est le problème avec la lecture d'une variable POST? – PhoebeB