关于ajax请求action回调函数处理返回值的问题 5
java代码:publicclassAjaxActionextendsActionSupport{publicvoidgetDept(){(中间省略,只写了处理结果)St...
java代码:
public class AjaxAction extends ActionSupport {
public void getDept() {
(中间省略,只写了处理结果)
String str={"1":{"Dname":"光电信息科学技术学院"},"2":{"Dname":"化学化工学院"}};
out.println("str");
out.close();
}
}
struts.xml代码:
<action name="getDept"
class="AjaxAction" method="getDept">
</action>
js代码
$(document).ready(function getDept() {
$.get("getDept", null, function (data) {
var obj = eval(data);
})
});
为什么回调函数中收到的data值是一个document对象而不是我想要的那个str字符串呢?(在firebug中检测到的)
麻烦各位资深大师帮忙解答一下! 展开
public class AjaxAction extends ActionSupport {
public void getDept() {
(中间省略,只写了处理结果)
String str={"1":{"Dname":"光电信息科学技术学院"},"2":{"Dname":"化学化工学院"}};
out.println("str");
out.close();
}
}
struts.xml代码:
<action name="getDept"
class="AjaxAction" method="getDept">
</action>
js代码
$(document).ready(function getDept() {
$.get("getDept", null, function (data) {
var obj = eval(data);
})
});
为什么回调函数中收到的data值是一个document对象而不是我想要的那个str字符串呢?(在firebug中检测到的)
麻烦各位资深大师帮忙解答一下! 展开
3个回答
展开全部
你用json格式 把 string类型封装成 对象,然后再把json对象解析为 string类型,这样应该就OK了吧,。
function checkExist(){
//使用 Ajax 的方式 判断数据库中是否有该用户的名字(注册的时候)
alert($("#name").val());
$("#nameW").empty();
var url = "regiValiAndLoginAjax!isNameExist";
//获取表单值,并以json的数据形式保存到params中
var params = {name:$("#name").val()}
//使用$.post方式
$.post(
url, //服务器要接受的url
params, //传递的参数
function cbf(data){ //服务器返回后执行的函数 参数 data保存的就是服务器发送到客户端的数据
//alert(data);
var member = eval("("+data+")"); //包数据解析为json 格式
isExist = member.nameExist;
if(member.nameExist == "false"){
isNameT = "true";
namePass = true;
//$("div[id!='nameW4']").empty();
alert("恭喜你,用户名可用的啦");
$("#nameW4").show("slow");
$("#nameW3").hide("slow");
$("#name").attr("disabled", true);
$("nameW1").css("color", "#333333");
}
else{
alert("用户名已存在,请重新输入");
namePass = false;
$("#nameW3").show("slow");
$("#nameW4").hide("slow");
isNameT = "false";
}
},
"json" //数据传递的类型 json
);
}
上面是 jsp 的页面代码:
下面是java中的代码;
//以下是ajax的访问的方法开始
public String isNameExist(){//判断用户的注册名在数据库中是否存在的 啦
vali = new Validation();
name = this.getName();
System.out.println("userName = " + name);
boolean exist = false;
String isExist = "false";
try {
exist = this.userService.existsName(name);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
if(exist){
isExist = "true";
}else{
this.getSession().put("name", this.getName());
System.out.println(this.getSession().get("name").toString());
}
vali.setNameExist(isExist);
JSONObject jo = JSONObject.fromObject(vali);
result = jo.toString();
System.out.println(result);
return SUCCESS;
}
其实json格式对数据的封装是很方便的,,ajax + jquery + json 应该是完美的搭配吧 ,,,
function checkExist(){
//使用 Ajax 的方式 判断数据库中是否有该用户的名字(注册的时候)
alert($("#name").val());
$("#nameW").empty();
var url = "regiValiAndLoginAjax!isNameExist";
//获取表单值,并以json的数据形式保存到params中
var params = {name:$("#name").val()}
//使用$.post方式
$.post(
url, //服务器要接受的url
params, //传递的参数
function cbf(data){ //服务器返回后执行的函数 参数 data保存的就是服务器发送到客户端的数据
//alert(data);
var member = eval("("+data+")"); //包数据解析为json 格式
isExist = member.nameExist;
if(member.nameExist == "false"){
isNameT = "true";
namePass = true;
//$("div[id!='nameW4']").empty();
alert("恭喜你,用户名可用的啦");
$("#nameW4").show("slow");
$("#nameW3").hide("slow");
$("#name").attr("disabled", true);
$("nameW1").css("color", "#333333");
}
else{
alert("用户名已存在,请重新输入");
namePass = false;
$("#nameW3").show("slow");
$("#nameW4").hide("slow");
isNameT = "false";
}
},
"json" //数据传递的类型 json
);
}
上面是 jsp 的页面代码:
下面是java中的代码;
//以下是ajax的访问的方法开始
public String isNameExist(){//判断用户的注册名在数据库中是否存在的 啦
vali = new Validation();
name = this.getName();
System.out.println("userName = " + name);
boolean exist = false;
String isExist = "false";
try {
exist = this.userService.existsName(name);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
if(exist){
isExist = "true";
}else{
this.getSession().put("name", this.getName());
System.out.println(this.getSession().get("name").toString());
}
vali.setNameExist(isExist);
JSONObject jo = JSONObject.fromObject(vali);
result = jo.toString();
System.out.println(result);
return SUCCESS;
}
其实json格式对数据的封装是很方便的,,ajax + jquery + json 应该是完美的搭配吧 ,,,
展开全部
1:out.println("str"); //去掉引号
2:var obj = eval(data); //在这里你把data值转换成了对象
如果要直接返回str:var obj = data;
2:var obj = eval(data); //在这里你把data值转换成了对象
如果要直接返回str:var obj = data;
追问
嗯,我原来是那样输出的,在后台输出的那个字符串是:{"1":{"Dname":"光电信息科学技术学院"},"2":{"Dname":"化学化工学院"}};
我监控的是data这个变量,而不是obj这个变量,监控obj这个变量的时候显示未定义
追答
var obj = ...这不是声明了吗?怎么会未定义?肯定是其它地方出错了,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$.get("getDept", null, function (data) {
var obj = eval(data);
},json)
var obj = eval(data);
},json)
追问
我改了,加上之后那个回调函数直接不能执
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询