2013-11-06 2 views
1

У меня есть веб-сервер для бутылок, и я использую jQuery для выполнения своих запросов ajax с помощью json, но ни один из них не отправляет, а другой не получает, я не уверен, что. Мой код в основном это:Почему запрос.json в бутылке не возвращается?

server.py

@route("/jsontest", method="POST") 
def jsontest(): 
    print(request.json) 

Всегда печатает None, запрос проходит, конечно, но это не кажется, получать какие-либо данные.

Javascript

$.post("/jsontest", {username: $loginName}, login_success) 

Код JavaScript спусков на нажатие кнопки и LoginName берется из входного окна. В js я сделал console.log ($ loginName), чтобы убедиться, что он правильно выбирает его, и это так, поэтому я предполагаю, что проблема заключается в том, что один вызов jQuery или я не правильно читаю данные на конец сервера. Оба кажутся довольно простыми, хотя я не уверен, что мне может не хватать.

+0

Попробуйте 'print (request.username)' –

+0

что такое login_success? –

+0

Кроме того, вы не отправляете json на сервер, почему вы ищете request.json? –

ответ

0

Bottle's request.json работает только в тех случаях, когда Content-type составляет application/json. (Возможно, ваш POST JQuery использует Content-type application/x-www-form-urlencoded.)

В этом случае номер .ajax() jQuery может быть более подходящим, чем .post().

0

Вы должны POST как JSON:

$.post("/jsontest", JSON.stringify({username: $loginName}), login_success)

6

Вы можете проверить свой метод бутылки с $ завитка:

curl -i -H "Content-Type: application/json" -X POST -d '{"UserName":"name","Password":"password"}' http://hostname/jsontest 

Теперь вы можете распечатать данные запроса по:
print request.json