2014-11-23 2 views
0

У меня есть форма, которая содержит два текстовых поля имя пользователя и пароль, когда я отправляю форму, которую мой сервлет
получил вызов успешно и правильно отправил ответ. Но в вызове метода отправки вызывается.Функция сбоя получает обратный вызов даже после получения ответа от сервера

Вот мой код.

        form.submit({ 
                success: function(form, action) { 
                 console.log(action); 
                 alert("Success"); 
                }, 
                failure: function(form, action) { 
                 console.log(action); 
                 alert("fail"); 
                } 

               }); 

Мой код сервлета.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
response.setContentType("text/html"); 
PrintWriter out=response.getWriter(); 
JSONObject obj=new JSONObject(); 
try { 
    obj.put("sucess",true); 
    out.print(obj.toString()); 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

} 

Но если я заменил form.submit с функцией расширения Ext.Ajax, получится успешно вызванное.

Ext.Ajax.request({ 
                url:"login", 
                success: function(result, request) { 
                 alert("success"); 
                 }, 
                 failure:function(response){ 
                  alert("failure"); 
                 console.log(response); 
                 } 
                }); 

Почему form.submit не работает должным образом ??

Примечание: Я не выполняю проверку подлинности на стороне сервера. Я намерен проверить, могу ли я получить ответ json от сервера, для Ext.Ajax.Request Я не отправляю параметры.

ответ

0

Найдено вопрос

Я сделал ошибку с моей стороны, Прежде чем перейти к моему вопросу I просто хочу объяснить что-то form.submit (успех, сбой) будет работать на сервере json response, который находится на ключе успеха, но Ajax.request использует код ответа запроса, а не успех: true/false, чтобы определить, какой обработчик для вызова.

В ниже коде при строительстве объекта JSon я сделал Опечатку в успехе

try { 
obj.put("sucess",true); 
out.print(obj.toString()); 
} 

После коррекции успеха на успех моей функции успеха в form.submit становится неудачным вызовом.

0

Попробуйте проверить, какой тип ошибки, чтобы дать вам направление в устранении неполадок, как:

failure: function(form, action) { 
    switch (action.failureType) { 
     case Ext.form.action.Action.CLIENT_INVALID: 
      Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values'); 
      break; 
     case Ext.form.action.Action.CONNECT_FAILURE: 
      Ext.Msg.alert('Failure', 'Ajax communication failed'); 
      break; 
     case Ext.form.action.Action.SERVER_INVALID: 
      Ext.Msg.alert('Failure', action.result.msg); 
    } 
} 
+0

да, получая в том же формате, и я сказал, что он отлично работает для запроса ext.ajax. –

+0

Извините - это означает, что комментарий, а не ответ, у вас нет формы, настроенной со стандартнымSubmit: true настроен? В противном случае, возможно, проанализировать и найти ответ в объекте action, который отправлен обратно - обновил мой ответ с подробностями о том, как это сделать. –

Смежные вопросы