Зенд Додзё Ajax отправить форму додзё - PullRequest
0 голосов
/ 23 марта 2012

Как отправить форму Dojo с помощью AJAX и, если есть ошибки, печатать ошибки рядом с неправильно заполненными полями? Сейчас я делаю что-то подобное:

dojo.ready(function() {
    var form = dojo.byId("user_profile_form");
    dojo.connect(form, "onsubmit", function(event){
    dojo.stopEvent(event);

    var xhrArgs = {
        form: form,
        handleAs: "json",
        load: function(responseText){
            var result_data = zen.json.getResult(responseText);
            dojo.byId("response").innerHTML = "Form posted.";
        },
        error: function(error){
            // We'll 404 in the demo, but that's okay.  We don't have a 'postIt' service on the
            // docs server.
            dojo.byId("response").innerHTML = "Form posted.";
        }
    }
    // Call the asynchronous xhrPost
    dojo.byId("response").innerHTML = "Form being sent..."
    var deferred = dojo.xhrPost(xhrArgs);
});

Но я не знаю, как печатать ошибки

1 Ответ

1 голос
/ 24 марта 2012

Есть несколько способов сделать это. Я предпочитаю подписаться на IO Pipeline Topics

Если есть ошибки, подпишитесь на тему /dojo/io/error. Вот пример, который будет Growl ошибок.

dojo.subscribe("/dojo/io/error", function(/*dojo.Deferred*/ dfd, /*Object*/ error){
    // Triggered whenever an IO request has errored.
    // It passes the error and the dojo.Deferred
    // for the request with the topic.

    var responseTextObject = dojo.fromJson(error.responseText)
    var growlMessage = '';

    if (responseTextObject && responseTextObject.message) {
        growlMessage += responseTextObject.message
    } else {
        // Don't Growl the xhr cancelled messages.
        if (error.message == 'xhr cancelled') {
            return;
        }

        growlMessage = error.message
    }

    new ext.Growl({
        message: growlMessage
    });
});

Сервер должен предоставить все подробности ошибки в ответе. В этом примере ожидается ответ в формате JSON, но если он не предоставлен, ошибка по-прежнему отображается.

Если вы хотите увидеть хороший неверный стиль поля, поместите виджеты в dijit.form.Form

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