onFailure вызывается, когда код состояния ответа http 200 в запросе mootools.JSON - PullRequest
1 голос
/ 22 апреля 2011

Я пытаюсь перейти от обычного запроса mootools к запросу. JSON, поскольку я использую исключительно json для связи между клиентом и моим сервером. У меня есть запрос json, определенный как:

    var jsonRequest = new Request.JSON({

        url: '/ServletContext/servlet', 
        onRequest: function(){
            // Just a class to make the cursor change to progress
            container.addClass('request-waiting');
        },
        // validationMessages should be a json object containing
        // messages on problems validating user input from server
        onSuccess: function(validationMessages){
            container.removeClass('request-waiting');
        },
        onFailure: function(requestObj){
            container.removeClass('request-waiting');
        }
    }).post({'context': context,'title': title});

В настоящее время я тестирую это в chrome, и запрос отправляется нормально, и я возвращаю http 200 с ожидаемым содержимым; но обратный вызов onFailure продолжает вызываться. Мне интересно, почему метод onSuccess не вызывается.

Строка json, которую я отправляю обратно (намеренно) в ответе:

"{titleErrors: [], contextErrors: ['Context must be more than 40 characters']}"

Я использую mootools 1.3 и tomcat 7.

РЕДАКТИРОВАТЬ: После небольшого поднятия стека mootools, я нашел вызов json.decode, и это не удалось. Я предполагаю, что это потому, что моя строка JSON искажена. Я не использовал json так долго, так что меня это не удивит, но я бы подумал, что это сработает. Я смотрю на это, но если вы сможете взглянуть на мой JSON и увидеть проблему, то это будет оценено.

1 Ответ

3 голосов
/ 23 апреля 2011

Джсон был уродливым.У меня было это:

{titleErrors: [], contextErrors: ["Context must be more than 40 characters"]}

, и это должно было быть (обратите внимание на кавычки вокруг имен переменных):

{"titleErrors": [], "contextErrors": ["Context must be more than 40 characters"]}
...