接收请求的servlet -
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>");
}
}
});
如果我要使用1个元素,即'id',我会得到ajaxResponse但是当我试图获得两个响应时,我得到的值是未定义的。我试过data.login.id&amp; data [id]但无法获得所需的输出。任何帮助将不胜感激。即使我尝试过JSON.Stringify()。
答案 0 :(得分: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(数据)或放置回调的断点,或简单添加调试器;代码,它会在不添加断点的情况下为您停止该行中的代码。
答案 1 :(得分:0)
谢谢Alex。我会给你+1行
$("#ajaxResponse").append("<b>Welcome</b> " + id + "<br>");
虽然我在使用时工作:
data: {
id: $('#id').val(),
pwd: $('#pwd').val()
},
如果不将我的代码更改为此代码,则该行无效。谢谢你的建议。