2015-02-11 25 views
1

接收請求,該servlet -無法在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 & data [id],但無法獲得所需的輸出。任何幫助將不勝感激。即使我已經嘗試過使用JSON.Stringify()。

+0

您可以添加原始響應嗎?如果我無法看到響應,則無法說明代碼有什麼問題。 – 2015-02-11 09:08:45

+0

我只是'undefined'

Vishu 2015-02-11 09:11:14

+0

我知道,但在Ajax響應中的數據的價值是什麼? 在函數中傳遞的值(data,textStatus,jqXHR)? 添加console.log(數據)並在控制檯窗口中可以看到它。 – 2015-02-11 09:12:31

回答

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

這已通過對AJAX數據是不一樣的數據

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

在這種成功回調數據是來自服務器的響應,並根據具有不同的(或相同的結構)服務器返回給你的數據。 如果你想從Ajax調用打印的價值,你需要使用剛剛ID

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

我看你要使用「data.login.id」你可以檢查什麼是數據的真實結構響應?添加console.log(數據)或放置該回調的斷點,或簡單添加調試器;代碼,它會停止代碼在那一行中爲你添加斷點。

+0

你可以用某種方式操縱我的代碼嗎?我明白你想說什麼。其實我知道的是我從Servlet發送Json數據,這就是爲什麼我在js中使用dataType:「json」。我將如何檢索servet作爲json發送的數據。由於ID無法正常工作,直接獲取響應。 – Vishu 2015-02-12 06:01:07

0

謝謝亞歷克斯。我會給你+1的線

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

雖然它工作時,我使用:

 data: { 

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

沒有改變我的代碼,這一個線路不能正常工作。感謝您的建議。

+0

顯然,我無法掌握的一個部分是當我製作LoginBean並以String的形式獲取數據時。即數據具有字符串值,我使用data.login.id獲取結果,其中login是LoginBean的對象,但在這種情況下,我直接獲取它。任何建議? – Vishu 2015-02-12 07:01:59