2015-02-11 3 views
1

сервлета, который получает запрос -Не удалось получить значение в ответ Ajax

 Gson gson = new Gson(); 
    JsonObject myObj = new JsonObject(); 
    LoginBean loginInfo = getInfo(userId,userPwd); 
    //System.out.println("00000000-----------"+loginInfo.userId); 
    JsonElement loginObj = gson.toJsonTree(loginInfo); 
    if(loginInfo.getUserId() == "GUEST!"){ 

     myObj.addProperty("success", false); 
    } 
    else { 

     myObj.addProperty("success", true); 
    } 
    myObj.add("login", loginObj); 
    System.out.println(":::::"+myObj.get("success")); 
    out.println(myObj.toString()); 
    out.close(); 

Вот файл JS -----

function loadScript(url, callback) 
{ 
var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = url; 
script.onreadystatechange = callback; 
script.onload = callback; 
head.appendChild(script); 
} 
    loadScript("js/json2.js", myJSCode); 
    var myJSCode = $(document).ready(function() { 

$("#loginForm").submit(function(e){ 
     e.preventDefault(); 
}); 


$("#login").click(function(e){ 


     dataString = $("#loginForm").serialize(); 


     var id = $("input#id").val(); 
     var pwd = $("input#pwd").val(); 
     dataString = "id=" + id + "&pwd="+pwd; 

     $.ajax({ 
      type: "POST", 
      url: "login", 
      data: { 
       id : id, 
       pwd : pwd 
      }, 

      dataType: "json", 


      success: function(data, textStatus, jqXHR) { 
       if(data.success){ 
        $("#ajaxResponse").html(""); 
        $("#ajaxResponse").append("<b>Welcome</b> " + data.login.id + "<br>"); 
        //alert("#ajaxResponse" + data.login.id); 
        alert(data['id']); 
        alert(data['pwd']); 

       } 

       else { 
        $("#ajaxResponse").html("<div><b>Login Credentials are invalid!</b></div>"); 
       } 
      } 
});  

Я получаю ajaxResponse если я иду с 1 элементом, то есть «id», но когда я попытался получить оба ответа, я получаю значение как неопределенное. Я попытался с data.login.id & данных [id], но не смог получить желаемый результат. Любая помощь будет оценена. Даже я пытался с JSON.Stringify().

+0

Можете ли вы добавить исходный ответ? Невозможно сказать, что не так с вашим кодом, если я не вижу ответа. –

+0

Я получаю только «неопределенный» в

Vishu

+0

Я знаю это, но каково значение данных в ответе ajax? Значение, переданное в функции (data, textStatus, jqXHR)? Добавьте console.log (данные) и в окне консоли вы можете его увидеть. –

ответ

1
 $.ajax({ 
       type: "POST", 
       url: "login", 
       data: { 
        id : id, 
        pwd : pwd 
       }, 
... 

Это данные передаются в AJAX не то же самое, что и данные в

success: function(data, textStatus, jqXHR) { 
        if(data.success){ 
... 

В этом успех обратного вызова данных ответа от сервера, и он имеет другую (или ту же структуру) на основе данные, которые сервер возвращает вам. если вы хотите вывести значение из АЯКС вызова, необходимо использовать только ID

$("#ajaxResponse").append("<b>Welcome</b> " + id + "<br>"); 

Я вижу, что вы пытаетесь использовать «data.login.id» вы можете проверить, что реальная структура данных в ответ ? добавьте console.log (данные) или поставьте точку останова, которая вызывает обратный вызов, или просто добавьте отладчик; кода, он остановит код в этой строке для вас без добавления точки останова.

+0

Можете ли вы манипулировать моим кодом так, как я понимаю, что вы хотите сказать. На самом деле я знаю, что я отправляю данные Json из Servlet, поэтому я использовал dataType: «json», в js. Как я получу отправку данных из сервлета как json. Получение ответа напрямую как id не работает. – Vishu

0

Спасибо Алекс. Я дам вам +1 для линии

$("#ajaxResponse").append("<b>Welcome</b> " + id + "<br>"); 

Хотя это работает, когда я использую:

 data: { 

       id: $('#id').val(), 
       pwd: $('#pwd').val() 
      }, 

, не меняя свой код к этому линия не работает. Спасибо за предложение.

+0

Одна часть, очевидно, я не могу понять, когда я делаю LoginBean и получаю данные как String. i.e имеет значение String, я получаю результат с использованием data.login.id, где login является объектом LoginBean, но в этом случае я получаю его напрямую. Любое предложение? – Vishu

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