2015-02-11 52 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