Джанго разбирает аргументы - PullRequest
0 голосов
/ 13 декабря 2010

Я использую вызов AJAX для получения данных с сервера:

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

На сервере urls.py:

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

URL-адрес, который поступает насервер http: / localhost / simple / gd /? t = PL

Но по какой-то причине я не могу заставить getData (запрос, данные) вызываться с "? t = PL" или с "t = PL "в качестве параметра" данных ".«данные» всегда пустые.

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Если вы используете тип: 'POST', тогда данные не добавляются к URL в виде строки запроса.

Вместо этого он включен в словарь POST объекта запроса.

Таким образом, чтобы передать что-то, что запускает ваше оповещение, вам нужно отобразить строку, которая может быть интерпретирована как данные json, что-то вроде:

(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 голосов
/ 13 декабря 2010

Это потому, что t=PL не является частью пути, это строка запроса (путь, грубо говоря, бит перед ?, строка запроса - бит после ?).

Лично я бы рекомендовал изменить urls.py следующим образом:

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

Затем настройте функцию просмотра следующим образом:

def getData(request, data):
    print data

на что-то вроде

def getData(request):
    print request.GET.get('t', None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...