求懂jquery和动态action的人:jquery的ajax动态action传不了action中的方法名啊

$(document).ready(function(){$("button").click(function(){$.post("news.html?ms=lxy",f... $(document).ready(function(){
$("button").click(function(){
$.post("news.html?ms=lxy",function(result){
alert(result);
alert(result.users[0].name);
});
});
});
第一个alert是
{"users":[{"name":"chuanguolaile"}]}
第二次就出错了..说是这个users是空
Error: Unable to get value of the property '0': object is null or undefined
java:
PrintWriter out = response.getWriter();
String ms=request.getParameter("ms");
if("lxy"==ms)
{
out.println("{\"users\":[{\"name\":\"chuanguolaile\"}]}");
return null;
}
else
{
out.println("{\"users\":[{\"name\":\"meiyouchuanguolai\"}]}");
return null;
}
这个方法是默认的方法,把js改成
$(document).ready(function(){
$("button").click(function(){
$.post("news.html?para=getName",function(result){
alert(result);
alert(result.users[0].name);
});
});
});
这样就不行了
public ActionForward getName(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
PrintWriter out = response.getWriter();
out.println("{\"users\":[{\"name\":\"lxy\"}]}");
out.flush();
out.close();
return null;
}
这样传过来getName但是不知道里面怎么传的它不认识...所以还是用的上面的函数
其实呢,两个问题现在都解决了
第一个问题嘛,不知道,反正代码还是以前的,但是可以用了,也许就是下面哥们说的,是json的缓存问题吧
第二个,是因为第一个已经有了execute了,所以actionservlet比较笨,就直接把所有的都转到那个方法,只要删除了execute就可以了,不过这样第一个就不能用了
展开
 我来答
hk_jinyao
2012-07-02 · 超过17用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:45万
展开全部
我晕。当然会出错啊。因为你返回来的值是字符串,并不是一个对象。
$.post("news.html?ms=lxy",function(result){
var temp =eval(result);
alert(temp);
alert(temp.users[0].name);
});
你这样试试
追问
$(document).ready(function(){
$("button").click(function(){
$.post("news.html?ms=lxy",function(result){
var temp=eval(result);
alert(temp);
alert(temp.users[0].name);
});
});
});是这样吧?我刚才把post改成getJSON可以了,但是之前改成get或者getJSON也不行,而且现在你这样也不行...而且,jquery是自动识别这些的...
有没有对下面问题的想法啊?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鼻涕一米二
2012-07-02 · TA获得超过816个赞
知道小有建树答主
回答量:460
采纳率:100%
帮助的人:265万
展开全部
$.post("news.html?para=getName",function(result){
alert(result);
alert(result.users[0].name);
},"json");

在你这段ajax函数改成这样 指明返回内容的格式为json就行 不用evel转对象了 ,api中讲的很清楚
更多追问追答
追问
恩,你这样也可以,不过本来我就是getJSON的,而且可以,后来改成post再改回来就不行了...
追答
那可能是因为ajax缓存了 反正就是json那点事儿
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zgm123163com
2012-07-03
知道答主
回答量:26
采纳率:0%
帮助的人:12.9万
展开全部
alert(result.users[0].name);改成alert(result.users.name);试试 我感觉json的数据返回用
result.xxx.xxx取就可以,相当于
result.getUsers().getName();
更多追问追答
追问
no no no..现在已经能用了
你的这个我没有试过,不过我觉得不可取啊,因为json理的users不是一个的话就不行了
追答
呵呵,json是key-value格式的数据,最好不起名字一样的,这样转成map也好转
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式