Как вернуть и использовать массив строк из ajax-вызова jQuery? - PullRequest
2 голосов
/ 08 октября 2010

Я использую Google App Engine (Python) вместе с jQuery для вызовов Ajax на сервер.У меня есть страница, где я хочу загрузить список строк в Javascript из вызова Ajax на сервер.

Метод сервера, который я хочу вызвать:

class BrowseObjects(webapp.RequestHandler):
    def get(self):
        ids_to_return = get_ids_to_return()
        // TODO: How to return these ids to the invoking ajax call?
        self.response.out.write(ids_to_return)

HTML-страница, на которой я хочу получить доступ к возвращенным идентификаторам:

    var strings_from_server = new Array();

    $.ajax({
        type: "GET",
        url: "/get_ids.html",
        success: function(responseText){
            // TODO: How to read these IDS in here?
            strings_from_server = responseText                
        },
            error: function (xhr, ajaxOptions, thrownError){
            alert(xhr.responseText);
        }
    });

Мой опыт работы сAjax ограничен - я использовал их только для хранения данных на сервере (а-ля команды POST), и поэтому я действительно не знаю, как получить данные с сервера.Заранее благодарен за помощь

Редактировать: Мой окончательный ответ:

Я перешел на полный вызов Ajax (для предотвращения междоменных запросов), а такжеобрабатывать обратные вызовы «ошибка».Мой метод работы с клиентом выглядит следующим образом:

         $.ajax({
            type: "GET",
            dataType: "json",
            url: "/get_ids.html",
            success: function(reponseText){
                strings_from_server = responseText                
            },
            error: function (xhr, ajaxOptions, thrownError){
                    alert(xhr.responseText);
            }
        });

Примечание. Я указываю dataType как 'json'.
И моя последняя серверная функция с ответом sahid выглядит так:* Спасибо всем!

Ответы [ 2 ]

6 голосов
/ 08 октября 2010

SDK Google AppEngine предоставлен django lib "simplejson".

from django.utils import simplejson

Так что ваш обработчик может просто сказать:хорошая статья про ajax / rpc: http://code.google.com/appengine/articles/rpc.html

3 голосов
/ 08 октября 2010

Возможно, это не самое чистое решение, но оно будет работать. Так как они являются просто идентификаторами, похоже, что безопасно помещать их прямо в строку.

class BrowseObjects(webapp.RequestHandler):
    def get(self):
       ids_to_return = get_ids_to_return()

       response_html = '["'
       response_html += ids_to_return.join('","')
       # Edit: since my ids are Key objects (not strings)
       # I had to use the following instead:
       # response_html += '","'.join(map(str, ids_to_return))
       response_html += '"]'

       self.response.out.write(response_html)

и

var strings_from_server = new Array();

$.getJSON("/get_ids.html", function(responseData){

    strings_from_server = responseData;

});

Вы можете проверить, был ли ответ пустым, в случае ошибки, и вы можете использовать $ .each для циклического просмотра результатов.

Я использую функцию jQuerys getJSON для автоматического анализа ответа. Поскольку я просто возвращаю список json, он сгенерирует массив данных в переменной strings_from_server.

...