Google Appengine & jQuery: ошибка 414 (запрошенный URI слишком длинный) - PullRequest
0 голосов
/ 16 сентября 2010

У меня проблемы с отправкой данных в локальное приложение appengine с использованием JQuery Ajax.Вот упрощенный код на стороне клиента:

text_to_save = 'large chunk of html here'
req = '/story/edit?story_id=' + story_id + '&data=' + text_to_save;
$.post(req, function(data) {
    $('.result').html(data);
});

Вот упрощенный код на стороне сервера:

class StoryEdit(webapp.RequestHandler):
    def post(self):
        f = Story.get(self.request.get('story_id'))
        f.html = self.request.get('data')
        f.put()

Ошибка 414 (слишком длинный запрашиваемый URI).Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 16 сентября 2010

Не используйте GET для отправки данных на сервер, используйте вместо этого POST!Хотя вы используете POST, данные передаются через параметры запроса, но их размер ограничен.

Попробуйте

text_to_save = 'large chunk of html here'
req = '/story/edit?story_id=' + story_id;
$.post(req, {data: text_to_save});
3 голосов
/ 16 сентября 2010

URI имеют ограничение максимальной длины. Он большой, но если вы передаете длинную строку данных, вы можете попасть в нее. Измените код, чтобы отправить текст как переменную сообщения.

text_to_save = 'large chunk of html here'
req = '/story/edit';
$.post(req, { story:id: story_id, data: text_to_save }, function(data) {
    $('.result').html(data);
});

И

class StoryEdit(webapp.RequestHandler):
    def post(self):
        f = Story.get(self.request.post('story_id'))
        f.html = self.request.post('data')
        f.put()

Вот еще немного информации: «Обычно веб-серверы устанавливают довольно большие ограничения на длину для подлинных URL-адресов, например, до 2048 или 4096 символов» - http://www.checkupdown.com/status/E414.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...