Начав подниматься по кривой обучения ajax, я пытаюсь сделать простой обратный вызов ajax моему приложению CherryPy и повторить данные, отправленные обратно в браузер.
Мой вызов ajax работает, и я могу вернуть, например, метод запроса обратно в браузер.
Однако я не могу найти данные, отправленные браузером, в объекте запроса внутри моего обработчика CherryPy. Вот мой обработчик CherryPy, взятый из этот вопрос а>:
class Contact:
def index(self):
cl = cherrypy.request.headers['Content-Length']
rawbody = cherrypy.request.body.read(int(cl))
body = None
#body = simplejson.loads(rawbody)
if body is None:
return cherrypy.request.method + ' (no body found)'
else:
return cherrypy.request.method + ' ' + body
index.exposed = True
и вот мой Javascript:
<script type="text/javascript">
function SendContactEntry() {
$.ajax( {type: "POST",
url: "/contact/",
data: { word: "HELLO" },
processData: false,
cache: false,
contentType: "application/json",
dataType: "text",
success: function (response){
alert(response);
}
}
);
}
</script>
Используя этот код, мой браузер получает ответ «POST (тело не найдено)».
Что я хочу сделать, так это узнать в моем обработчике CherryPy, что мне было отправлено значение word
«HELLO».
Если я раскомментирую строку body = simplejson.loads(rawbody)
, я получу HTML-статус 500 от CherryPy. То же самое произойдет, если я попытаюсь украсить свою функцию index() @cherrypy.tools.json_in()
.