日期:2014-05-16  浏览次数:20701 次

struts2中,如果采用ajax调用,怎么获取页面数据 - Web 开发 / Ajax
1,在Action类中定义一个User user对象,有name,id属性;
2,页面中这样写
  <input type="text" name="user.name" id="user.name" />
  <input type="text" name="user.id" id="user.id" />

3,如果是用form提交的话,在Action中会自动把页面输入的name和id装载到user对象
4,但是我现在用了jquery的ajax调用,目的是为了在Action返回后直接处理页面
  $.ajax({
url:'save_Batch',
type:'POST',
error:function(xhr,status,errorMessage){},
success:function(){
alert('保存成功!');
  //后续处理
}
});
  这样调用的话页面数据不会装载到action的user对象,user对象还是null,如果需要传递数据的话,只能在ajax调用中使用data,但是如果页面数据元素很多的话,写起来太繁琐

请问有什么办法能够实现用ajax调用也能装载数据吗,谢谢!

------解决方案--------------------
CSS code

你可以通过jQuery先获得页面的值
然后将值传过去,url:'save_Batch?user.name=aaaa&user.id=bbbbb',
这样后台还是可以得到这些数据的。
前提是传值的方式是以对象的方法,因为你在struts2中是user的getter、setter方法
所有在js中用data: {user.id:1,user.name:'bbb'}
也是可行的

------解决方案--------------------
我跟你的问题是一样的。
我的写法是:
//查询条件生成json数据
function queryTerInfo(){
var jsonStr = [];
var _str = []; 
$("#querySite input:text").each(function(){
jsonStr.push("'"+$(this).attr("name")+ "':'" + encodeURI($(this).val())+"'");
});
$("#querySite select").each(function(){
jsonStr.push("'"+$(this).attr("name")+ "':'" + encodeURI($(this).val())+"'");
});
jsonStr = jsonStr.join(','); 
_str.push('{'); _str.push(jsonStr); _str.push('}');
_str = _str.join('');
var data = eval('(' + _str + ')');
ajax(TER_QUERY_URL, data);
}
------解决方案--------------------
因为我的查谒条件用<div id='querySite '>包起来。然后里面就text select 这些条件。如果你还有别的可以加。元素的名称就不变跟你上面一样user.id ,user.name
得到的数据为:{'user.id':'1','user.name':'2'}