jquery.ajax опубликовать запрос для получения данных с сервера ядра приложения - PullRequest
2 голосов
/ 25 августа 2011

Извиняюсь за вопрос noob ...

Здравствуйте, как мне получить данные с конца Python сервера appengine, используя jQuery.ajax?Я знаю, как отправлять данные на сервер, используя ajax и соответствующий обработчик, но мне было интересно, может ли кто-нибудь сказать мне, как выглядит запрос ajax для получения значений с сервера.(Предположим, я хотел получить номер из хранилища данных и использовать его в javascript).

отправка клиента на сервер (с использованием jquery)

javascript на стороне клиента:

//jQuery and ajax function loaded.

<script type="text/javascript">
    var data = {"salary":500};
    $.ajax({
    type: "POST",
    url: "/resultshandler",
    data: data
</script>

на стороне сервера:

class ResultsHandler(webapp.RequestHandler):
    def get(self):
        n = cgi.escape(self.request.get('salary'))
        e = Engineer(salary = n)
        e.put()

и в соответствии с def main () :, у меня есть обработчик ('/ put_in_datastore', ResultsHandler)

Опять же, какой будет подобный коддля получения чисел с конца Python?Если бы кто-то мог предоставить и код обработчика, и код javascript, это было бы здорово ...

1 Ответ

9 голосов
/ 25 августа 2011

Механизм абсолютно одинаков в обоих направлениях передачи данных. Используйте параметр success в вызове ajax для обработки данных после успешного завершения запроса. Это обычно называется обратным вызовом . Другие обратные вызовы существуют. См. http://api.jquery.com/jQuery.ajax/ для полной информации.

$.ajax({
  url: "/resultshandler",
  type: 'POST',
  data: data,
  success: function(data, status){
    //check status
    //do something with data
  }
});

На конце Python вы возвращаете данные с self.response.write.out(output). Смотрите пример ниже.

class ResultsHandler(webapp.RequestHandler):
    def post(self):
        k = db.Key.from_path('Engineer', the_engineer_id) #will be an integer
        e = db.get(k)
        output = {'salary': e.salary}
        output = json.dumps(output) #json encoding
        self.response.write.out(output)

Кроме того, ваш URL-адрес должен выглядеть как ('/resultshandler', ResultsHandler). Я не знаю, откуда взялся /put_in_datastore.

Наконец, обратите внимание на def post, а не def get, потому что я делаю запрос POST с Javascript. Вы можете сделать то же самое, что и запрос GET, и в этом случае вы будете использовать def get.

...