jquery ajax回调函数获得值为null
1.下面是struts.xml里的action信息<actionname="me"class="meAction"><resultname="success"type="...
1.下面是struts.xml里的action信息
<action name="me" class="meAction">
<result name="success" type="json">
<param name="root">users_json</param>
</result>
</action>
2.下面是action类(下面涉及到的get,set方法均齐全)
public String execute() {
System.out.println("*********");
Map<String, Object> map = new HashMap<String, Object>();
if(!"".equals(name_text)) map.put("name", name_text);
map.put("startIndex", 2);
map.put("endIndex", 4);
try {
records = queryUserService.getRecords("getRecordsNum",map);
users = queryUserService.getModels("me",map);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String users_json = JSON.toJSONString(users);
System.out.println(users_json);
return "success";
}
3.通过ajax获得user_json字符串
<html>
<head>
<script type="text/javascript" src="../js/jquery-1.4.3.js"></script>
</head>
<body>
<form action="me" method="post">
用户名:<input type="text" id="name_text" name="name_text" />
密码:<input type="password" id="pwd_text" name="pwd_text" />
<input type="button" value="查询" id="sbt"/>
</form>
</body>
<script type="text/javascript">
$(document).ready(function(){
var name = $('#name_text').val();
var password = $('#pwd_text').val();
$("#sbt").click(function(){
alert("1111");
$.ajax({
type:"post",
url:"me",
data:"name="+name,
cache:false,
dataType:"String",
success:function(data) {
alert(data);
}
});
});
});
</script>
</html>
<!--叙述结束-->
success:function(data) 这个方法为什么弹出是null而不是后台传过来的users_json内容,我很纳闷,后台action已经执行了,下面图片是后台执行后users_json的信息,信息都有了,后台应该没错的吧,请大侠帮我看看 展开
<action name="me" class="meAction">
<result name="success" type="json">
<param name="root">users_json</param>
</result>
</action>
2.下面是action类(下面涉及到的get,set方法均齐全)
public String execute() {
System.out.println("*********");
Map<String, Object> map = new HashMap<String, Object>();
if(!"".equals(name_text)) map.put("name", name_text);
map.put("startIndex", 2);
map.put("endIndex", 4);
try {
records = queryUserService.getRecords("getRecordsNum",map);
users = queryUserService.getModels("me",map);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String users_json = JSON.toJSONString(users);
System.out.println(users_json);
return "success";
}
3.通过ajax获得user_json字符串
<html>
<head>
<script type="text/javascript" src="../js/jquery-1.4.3.js"></script>
</head>
<body>
<form action="me" method="post">
用户名:<input type="text" id="name_text" name="name_text" />
密码:<input type="password" id="pwd_text" name="pwd_text" />
<input type="button" value="查询" id="sbt"/>
</form>
</body>
<script type="text/javascript">
$(document).ready(function(){
var name = $('#name_text').val();
var password = $('#pwd_text').val();
$("#sbt").click(function(){
alert("1111");
$.ajax({
type:"post",
url:"me",
data:"name="+name,
cache:false,
dataType:"String",
success:function(data) {
alert(data);
}
});
});
});
</script>
</html>
<!--叙述结束-->
success:function(data) 这个方法为什么弹出是null而不是后台传过来的users_json内容,我很纳闷,后台action已经执行了,下面图片是后台执行后users_json的信息,信息都有了,后台应该没错的吧,请大侠帮我看看 展开
3个回答
展开全部
你在后台断点一下,看看是否跳入到你后台的代码段
看了你的后台代码,感觉因该写
String users_json = JSON.toJSONString(users);
return users_json;
//System.out.println(users_json);
//return "success";
3. ajax添加一个error:function(data){alert(data)},看看有没有报错信息。
更多追问追答
追问
1.
后台肯定执行了,图片上信息就是后台执行的结果
2.
users_json
因为name="success",所以必须写return"success",如果写users_json,action将没有对应的name
3.试了,没有报错信息
追答
你这里肯定不能return "success"。如果是return "success"。那么就是把"success"这个字符串传递给页面。
你贴了一段配置文件,是用的什么框架?
你尝试一下return users_json;然后在ajax成功的代码里面,alert一下试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$(document).ready(function(){
var name = $('#name_text').val();
var password = $('#pwd_text').val();
这个是什么情况啊 你怎么不放到 $("#sbt").click(function(){ 这个里面,点击了才获取值。
System.out.println(users_json);
return "success";
这里是什么东东啊 又是打印 又是return的 直接输出 就可以了 打印了就返回不了
var name = $('#name_text').val();
var password = $('#pwd_text').val();
这个是什么情况啊 你怎么不放到 $("#sbt").click(function(){ 这个里面,点击了才获取值。
System.out.println(users_json);
return "success";
这里是什么东东啊 又是打印 又是return的 直接输出 就可以了 打印了就返回不了
追问
1。
var name = $('#name_text').val();
var password = $('#pwd_text').val();
这两句无论放在哪里不会影响结果
2.
System.out.println(users_json);
是为了看看users_json内容写的,这句去掉之后,程序alert(data);依然弹出的是null
追答
dataType:"String", 这个什么情况 你要数组那么 就用 dataType:"JSON",
后台一旦打印 就返回不了值。String users_json = JSON.toJSONString(users);
这里直接用 普通的输出就可以了 比如我是php的 直接 echo(JSON.toJSONString(users))就可以了 把那个 return "success"; 去掉,还有 要确定这个是 json格式 JSON.toJSONString(users
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你先吧<param name="root">users_json</param>这段去掉,然后看看alert什么。
我觉得param应该写users
<param name="root">users</param>
我觉得param应该写users
<param name="root">users</param>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询