2013-02-10 2 views
0
$('#loginForm').submit(function(e){ 

     var $inputs = $(this).find("input"); 
     var serializedData = $(this).serialize(); 
     $inputs.prop("disabled", true); 

     var request = $.ajax({ 
      url: "myurl", 
      dataType: "json", 
      type: "GET", 
      data: serializedData, 
     }); 

     request.done(function (response, textStatus, jqXHR){ 
      $('#loginMessage').text('GOOD'); 
     }); 

     request.fail(function (jqXHR, textStatus, errorThrown){ 
      $('#loginMessage').text('Some error occured. Please try again'); 
      console.error("The following error occured: ",errorThrown,jqXHR); 
     }); 

     request.always(function() { 
      $inputs.prop("disabled", false); 
     }); 
     // prevent default posting of form 
     e.preventDefault();   
    }); 

Я новичок в JQuery и в приведенном выше блоке коды .done не выполняется и поджигатель консоль дисплея этого сообщения: -JQuery AJAX Done не выполняет

GET myurl?userID=aman&password=aman 200 OK 37ms JQuery .... мин .js (линия 2)

следующая ошибка: (пустая строка) Object { readyState=0, status=0, statusText="error"}

Server Side Scripting

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String username = request.getParameter("userID"); 
     String password = request.getParameter("password"); 
     System.out.println("GET"); 
     response.setContentType("application/json"); 
     PrintWriter out = response.getWriter(); 
     Gson gson = new Gson(); 
     if(username.equals("aman") && password.equals("aman")){ 
      out.println(gson.toJson(new Boolean("true"))); 
     }else{ 
      out.println(gson.toJson(new Boolean("false"))); 
     } 
     out.close(); 
    } 
+0

Проверьте ошибку ... почему вы ее нашли? – gdoron

+2

Вместо request.done и fail попробуйте использовать успех и ошибку, посмотрите на jquery ajax api для успеха и ошибки – Abubakkar

+0

Я включил протоколы консоли firebug в вопрос и не смог идентифицировать ошибку и если есть какой-либо другой метод для выявления ошибки, пожалуйста, упомянуть. Спасибо – Aman

ответ

2

Возможно, это не вызвано, потому что вместо этого вызывается fail. Поскольку сам HTTP-запрос, похоже, сработал, другая возможная проблема заключается в том, что он не возвращает надлежащего содержимого json, тогда как ответ интерпретируется как таковой (из-за dataType: «json»).

Итак, вы должны выяснить, какое содержимое сервер возвращает.

5

Проблема, вероятно, заключается в том, что вы не отправляете полный JSON. Я выводить результат из

out.println(gson.toJson(new Boolean("true"))); 

и все, что вы получаете, это слово true. Попробуйте изменить его на что-то вроде этого.

HashMap<String, Boolean> hm = new HashMap<String, Boolean>(); 
hm.put("success", true); 
out.write(gson.toJson(hm)); 

Запуск, что я получил {"success": true}, который является действительным JSON.

+0

Блок .done не работает. – Aman

0

Я не знаю почему, но иногда точки останова firebug создают впечатление, что код в запросе.done() не выполняется. Возможно, это просто направлено на консоль.

Попробуйте проверить код без точек останова в firebug.

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