Как отправить данные в расширение Chrome из webapp2?

У меня есть расширение Chrome, которое отправляет данные в Google App Engine (webapp2).

chrome.extension.onMessage.addListener(function (message, sender, sendResponse) {

if (message.paragraphs_ready) {

    $.ajax({
        url: 'http://my_website.appspot.com/',
        type: 'POST',
        data: {'paragraphs_ready': message.paragraphs_ready},
        contentType: "application/x-www-form-urlencoded",
        //dataType: 'json',
        success: function(){
            alert("Server received my data");
        }
    });
}

});

GAE(webapp2) обрабатывает данные и должен отправить ответ расширению Chrome. Я не хочу использовать Channel Python API, если это возможно.

class DataProcessing(webapp2.RequestHandler):
    """This Handler is responsible for the Processing"""
    def post(self):

    to_be_processed = cgi.escape(self.request.POST['paragraphs_ready'])

    def my_proc(to_be_processed):
        return to_be_processed

    self.response.write(my_proc(to_be_processed)

person LLaP    schedule 01.10.2014    source источник


Ответы (1)


Функция success по ajax-запросу вызывается, когда сервер отвечает, а не когда клиент отправляет запрос.

Итак, в вашем случае у вас будет что-то вроде этого:

success: function(data){
    alert("Server received my data AND sent a response");
    alert(data);
}

успех: функция, которая вызывается в случае успешного выполнения запроса. В функцию передаются три аргумента: данные, возвращенные с сервера, отформатированные в соответствии с параметром dataType; строка, описывающая статус; и объект jqXHR (в jQuery 1.4.x, XMLHttpRequest). Начиная с jQuery 1.5, настройка успеха может принимать массив функций. Каждая функция будет вызываться по очереди.

Подробнее см. здесь: http://api.jquery.com/jquery.ajax/

person Mihail Russu    schedule 01.10.2014
comment
Проблема в том, что GAE не отправляет обратно данные. - person LLaP; 02.10.2014
comment
my_proc(to_be_processed) возвращает какие-либо данные? - person Mihail Russu; 02.10.2014
comment
Да, я просто не знаю, как использовать self.response.write(my_proc(to_be_processed)), поэтому данные отправляются обратно. - person LLaP; 02.10.2014
comment
Больше нечего знать. self.response.write(my_proc(to_be_processed)) будет отправлять данные обратно клиенту, пока my_proc(to_be_processed) возвращает данные. Форматирование отключено в вашем коде обработчика Python. Можете ли вы сначала исправить это, чтобы убедиться, что это не проблема? - person Mihail Russu; 02.10.2014