Какая-либо хорошая платформа Ajax для приложений Google App Engine? [закрытый]

Ваш метод обновления - получить

[HttpGet]
            public JsonResult UpdateQIOG1(int qa){}

изменить на

[HttpPost]
            public JsonResult UpdateQIOG1(int qa){}
14
задан Graviton 10 September 2008 в 13:12
поделиться

11 ответов

Поскольку Google Web Toolkit подмножество Java, это работает лучше всего когда Вы Java в бэкенде также. Так как Google App Engine в настоящее время Python только , я думаю, что необходимо было бы сделать большое питание собирающийся заставить сервер и клиент говорить приятно друг с другом.

jQuery, кажется, самая популярная опция библиотеки JavaScript в Тег Ajax по DjangoSnippets.com .

Редактирование: Вышеупомянутое только верно для приложений Google App Engine, записанных в Python. Поскольку Google App Engine теперь поддерживает Java, GWT мог теперь быть хорошим выбором для записи фронтэнда Ajax. Google даже имеет учебное руководство, показывающее Вам, как сделать это.

12
ответ дан 1 December 2019 в 07:41
поделиться

Google has recently announced the Java version of Google App Engine. This release also provides an Eclipse plugin that makes developing GAE applications with GWT easier.

See details here: http://code.google.com/appengine/docs/java/overview.html

Of course, it would require you to rewrite your application in Java instead of python, but as someone who's worked with GWT, let me tell you, the advantages of using a modern IDE on your AJAX codebase are totally worth it.

0
ответ дан 1 December 2019 в 07:41
поделиться

Я в настоящее время использую JQuery для своего приложения GAE, и это работает красиво на меня. У меня есть диаграмма (диаграммы Google), который является динамичным и использует вызов Ajax для захвата строки JSON. Это действительно, кажется, хорошо работает для меня.

0
ответ дан 1 December 2019 в 07:41
поделиться

A nice way is to use an AJAX library is to take advantage of Google's AJAX Libraries API service. This is a bit faster and cleaner than downloading the JS and putting it in your /static/ folder and doesn't eat into your disk quota.

In your javascript you would just put, for example:

google.load("jquery", "1.3.2");

and/or

google.load(google.load("dojo", "1.3.0");

Somewhere in your header you would put something like:

<script src="http://www.google.com/jsapi?key=your-key-here"></script>

And that's all you need to use Google's API libraries.

7
ответ дан 1 December 2019 в 07:41
поделиться

Нет никакой причины, почему Вы не должны использовать GAE и Google Web Toolkit (GWT) вместе. Вы пишете свой код бэкенда в Python и код frontend в Java (и возможно некоторый JavaScript), который затем компилируется в JavaScript. При использовании другой платформы Ajax у Вас также будет это различие между серверным и клиентским языком.

GWT имеет функции, которые делают удаленный вызов кода Java сервера легче, но они являются совершенно дополнительными. Можно просто использовать JSON или интерфейсы XML, точно так же, как с другими платформами Ajax.

GWT 1.5 также идет с Типами Наложения JavaScript, которые в основном позволяют, Вы для обработки части данных JSON как Java возражаете при разработке клиентского кода. Можно читать больше об этом здесь .

Обновление:

Теперь, когда Google добавил поддержку Java Google App Engine, можно разработать и бэкенд и код frontend в Java на полном стеке Google - если Вам нравится. Существует хорошее плагин Eclipse от Google, который делает очень легким разработать и развернуть приложения, которые используют GAE, GWT или обоих.

4
ответ дан 1 December 2019 в 07:41
поделиться

Я рекомендовал бы изучить чистую платформу JavaScript (вероятно, JQuery) для Вашего клиентского кода и записал бы сервисы JSON в Python - который, кажется, самое легкое / самый лучший способ пойти.

Google Web Toolkit позволяет Вам записать UI в Java и скомпилировать его в JavaScript. Как Dave говорит, это может быть лучший выбор, где бэкенд находится в Java, поскольку это имеет хорошие рычаги RPC для того случая.

3
ответ дан 1 December 2019 в 07:41
поделиться

Можно хотеть взглянуть на Пижаму ( http://pyjs.org/ ), который является "GWT для Python".

2
ответ дан 1 December 2019 в 07:41
поделиться

Вот то, как мы реализовали Ajax на Google App Engine, но идея может быть обобщена на другие платформы.

у Нас есть сценарий обработчика для запросов Ajax, который отвечает - главным-образом ответами JSON. Структура выглядит примерно так (это - выборка из стандартного сценария обработчика GAE):

def Get(self, user):
    self.handleRequest()

def Post(self, user):
    self.handleRequest()


def handleRequest(self):        
    '''
    A dictionary that maps an operation name to a command.
    aka: a dispatcher map.
    '''
    operationMap = {'getfriends':               [GetFriendsCommand],
                    'requestfriend':            [RequestFriendCommand, [self.request.get('id')]],
                    'confirmfriend':            [ConfirmFriendCommand, [self.request.get('id')]],
                    'ignorefriendrequest':      [IgnoreFriendRequestCommand, [self.request.get('id')]],
                    'deletefriend':             [DeleteFriendCommand, [self.request.get('id')]]}

    # Delegate the request to the matching command class here.

команды являются простой реализацией шаблона "команда":

class Command():
    """ A simple command pattern.
    """
    _valid = False
    def validate(self):
        """ Validates input. Sanitize user input here.
        """
        self._valid = True

    def _do_execute(self):
        """ Executes the command. 
            Override this in subclasses.
        """
        pass

    @property
    def valid(self):
        return self._valid

    def execute(self):
        """ Override _do_execute rather than this.
        """ 
        try:
            self.validate()
        except:
            raise
        return self._do_execute()

    # Make it easy to invoke commands:
    # So command() is equivalent to command.execute()
    __call__ = execute

На стороне клиента, мы создаем делегата Ajax. Prototype.js делает это легким записать и понять. Вот выборка:

/** 
 * Ajax API
 *
 * You should create a new instance for every call.
 */
var AjaxAPI = Class.create({
    /* Service URL */
    url: HOME_PATH+"ajax/",

    /* Function to call on results */
    resultCallback: null,

    /* Function to call on faults. Implementation not shown */
    faultCallback: null,

    /* Constructor/Initializer */
    initialize: function(resultCallback, faultCallback){
        this.resultCallback = resultCallback;
        this.faultCallback = faultCallback;
    },

    requestFriend: function(friendId){
        return new Ajax.Request(this.url + '?op=requestFriend', 
        {method: 'post',
         parameters: {'id': friendId},
         onComplete: this.resultCallback
        });     
    },

    getFriends: function(){
        return new Ajax.Request(this.url + '?op=getfriends', 
        {method: 'get',
         onComplete: this.resultCallback
        });    
    }

});

для вызова делегата Вы делаете что-то как:

new AjaxApi(resultHandlerFunction, faultHandlerFunction).getFriends()

я надеюсь, что это помогает!

4
ответ дан 1 December 2019 в 07:41
поделиться

jQuery является прекрасной библиотекой, но также и проверьте Прототип платформа JavaScript . Это действительно поворачивает JavaScript из того, чтобы быть иногда неловким языком на красивый и изящный язык.

1
ответ дан 1 December 2019 в 07:41
поделиться

Если Вы хотите смочь вызвать вызовы метода от JavaScript до Python, JSON-RPC работы хорошо с Google App Engine. См. статью Google, " Используя Ajax, чтобы Включить Клиенту Запросы RPC ", для деталей.

0
ответ дан 1 December 2019 в 07:41
поделиться

попробуйте также GQuery для GWT . Это код Java:

public void onModuleLoad() { 
    $("div").css("color", "red").click(new Function() { 
        public void f(Element e) { 
            Window.alert("Hello"); 
            $(e).as(Effects).fadeOut(); 
        } 
    }); 
} 

Код Java, приводящий к несколько дорогостоящей оптимизации во время компиляции (Java-> JavaScript) и более простому рефакторингу.

Красиво, не правда ли?

2
ответ дан 1 December 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: