问题描述
我用Ajax异步提交后;再获取action的值,具体如下 页面 //异步条件下发请求 function _sendPara(){ (function($) { $(function() {$.ajax({type:"post",url:"sendPara_send.do?Ips="+Ips+"&TableNames="+TableNames,success:function(res){alert("${sendMeg}");}}); }); })(jQuery); }Action里的代码:request.setAttribute("sendMeg", message);我在页面上的处理方式没能获取到值,请问各位我该如何获取呢 问题补充:andy_javahome 写道
解决方案
哥们你这个${sendMeg}就是el表达式 ${};我经常在js里用,没出过问题,但也没用过复杂的在js里。给你解决问题***************************************json返回的可以 对象 数组 数字 串 true false null,这个你可以在你引入的net.sf.json.JSONObject;把JSONObject去掉你点一下看都有什么类JSONObject jsonObject = JSONObject.fromObject(object); 这个就是对象 要求应该是键值型,在不改变writerJSON方法的前提下你可以将你要传的值这样写:Map map =new HashMap(); String message=sendText.toString(); map.put("urlm", message); this.writerJSON(map, reponse);简单解释一下,你要是传的对象fromObject处理后就是个map,因为你的对象一定是有属性名和属性值。在页面绝对得到
解决方案二:
aciont里面应该用response.getOutputStream().write("");之所以你获取不到值,是因为你的页面没有再次编译。
解决方案三:
to andy_javahome:你确定js里面用EL没问题?
解决方案四:
如果你会Ajax不会json你还真的学学,我简单给你说说 。1、首先你得引入一个jar 我的版本是json-lib-2.1.jar在网上随便都能下到。2、在后台写个方法:public void writerJSON(Object object,HttpServletResponse reponse) {JSONObject jsonObject = JSONObject.fromObject(object);try {Writer writer = reponse.getWriter();System.out.println("Json Data :" + jsonObject.toString());writer.write(jsonObject.toString());writer.flush();writer.close();} catch (IOException e) {e.printStackTrace();}}我们通常把这个方法卸载BaseAction里,这个是准备工作,那个object可以是你的任何对象和属性。3、一般将你的action 的返回值设置为void 在action方法里的最后返回你的数据this.writerJSON(message, reponse);这两个参数是上面方法里的,如果你的只是个字符串就简单了,通常都是传出个对象然后对象点你的属性4.页面应该: $(function() { $.ajax({ type:"post", url:"sendPara_send.do?Ips="+Ips+"&TableNames="+TableNames, dataType : "json", success:function(res){ //这个地方就看你的数据类型了如果只是个String的 alert(res); //如果你把那个字符串放入对象里可以这样写 alert(res.sendMeg); } }); }); 就说这些了有什么不理解可以一起讨论,还有上面那哥们怀疑你那是不是el表达式,我确定 你用的${sendMeg}就是el表达式,而且在js里用时没问题的,但在回调函数里的去数据,是json最擅长的。
解决方案五:
看错了,把${}看成EL了,可能是下面有句request.setAttribute("sendMeg", message); 让我以为是从request中拿数据了。不过如果你想要在ajax中拿到返回的数据,直接用ls的response.getWriter().write(text)就行了。当然也可以写在request中,不过你要在页面上有一个控件id为sendMeg,然后把该控件的值设置为request.getAttribute(“sendMeg”)。只有这样才能通过${sendMeg}拿到值。
解决方案六:
ajax请求结果就不用放入request中了,直接用response.getWriter().write(text)输出结果
解决方案七:
额,你是在js里面写EL么?还真没看见有人这么试过。
解决方案八:
你的res里面是什么数据,你异步请求返回的数据类型是什么还是没有返回数据只是一个操作。一个正常的解决思路是你用Ajax的json处理,这个你要是会的话我就不多说了,要是不会我几句话也说不明白。另一个就是比较笨的办法,就是你在你的action请求给个结果页面,这个页面里的内容就是一个hidden类型的input,这个input的value就是你的${sendMeg},然后再你Ajax的回调函数里的res就是这个就是的那个小页面(其实里面可能就一个input),接下来你可以随意处理,你可以把这个res放到某个div里 反正是隐藏的,然后你在得到这个input的值。这个方法貌似很笨但是是万能的。