使用jQuery框架的ajax技术,在Struts2返回json格式的数据
2013-05-15 20:23
666 查看
刚写的时候 在Action中,写个方法然后在写个String类型的返回值,以告诉 Struts2将跳转到哪个页面。这样写,使用response.getPrintWirter.write()打印json数据 老是在客户端的$.post的那个回调函数里面拿不到。思来想去才发现在相应的Action中方法写了返回值,然后使用Ajax技术请求后,它跳到你在struts.xml配置的哪个相应的result里面去了。
后来干脆把相应的那个Action里面的相应方法的返回值 写成void了,后来就可以了。
下面你们看下我今天下午写的这个代码吧。
JSP页面主要代码(由于主要为了测试,就把js一起写在jsp页面里面了):
<script type="text/javascript">
$(document).ready(function()
{
$.post("getProvinces",function(data,textStatus)
{
var dataObj=eval("("+data+")");
for(var i=0;i<dataObj.length;i++)
{
var $option=$("<option></option>");
$option.attr("value",dataObj[i].id);
$option.text(dataObj[i].name);
$("#proviceId").append($option);
}
},"json") ;
$("#proviceId").bind("change",function()
{
var ids=this.value;
if(ids==""){return;}
$.post("getCitys",{pid:ids},function(data,textStatus)
{
var dataObj=data;
$("#cityId option[value!='']").remove();
for(var i=0;i<dataObj.length;i++)
{
var $option=$("<option></option>");
$option.attr("value",dataObj[i].id);
$option.text(dataObj[i].name);
$("#cityId").append($option);
}
},"json")
});
});
</script>
省份:
<select name="province" id="proviceId">
<option value="">----请选择---</option>
</select>
市区:
<select name="city" id="cityId">
<option value="">----请选择---</option>
</select>
下面看下Struts2里面相应的Action代码:
public class ActionAction extends ActionSupport {
private int pid=1;
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
/**
*数据初始化(由于主要为了测试,没有连接数据库了,直接将数据保存在java类的静态变量里面)
*/
public void init() {
ListDate.dateC.clear();
Provice p = null;
City c = null;
for (int i = 1; i <= 5; i++) {
p = new Provice();
p.setId(i);
p.setName("广西" + i);
for (int j = 1; j < 6; j++) {
c = new City();
c.setId(j);
c.setName("桂林" + j);
p.getListC().add(c);
}
ListDate.dateC.add(p);
}
}
public void getProvinces() {
init();
List<Provice> listP = new ArrayList<Provice>();
listP = ListDate.dateC;
JsonConfig config = new JsonConfig();
config.setExcludes(new String[] { "listC" });
JSONArray listparray = JSONArray.fromObject(listP, config);
try {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.write(listparray.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
public void getCitys() {
System.out.println("进来了吗dd:"+pid);
try {
init();
List<Provice> listP = new ArrayList<Provice>();
listP = ListDate.dateC;
List<City> listC = new ArrayList<City>();
for (Provice p : listP) {
if (p.getId() == this.pid) {
listC = p.getListC();
break;
}
}
JSONArray jsonarry = JSONArray.fromObject(listC);
HttpServletResponse response = ServletActionContext.getResponse();
System.out.println(jsonarry);
response.setCharacterEncoding("utf-8");
response.getWriter().write(jsonarry.toString());
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
下面看下struts.xml里面的主要配置:
<action name="getProvinces" class="com.action.ActionAction" method="getProvinces">
</action>
<action name="getCitys" class="com.action.ActionAction" method="getCitys">
</action>
主要关键代码就这些。主要为了提供给在这方面初学者。望高手勿喷!
后来干脆把相应的那个Action里面的相应方法的返回值 写成void了,后来就可以了。
下面你们看下我今天下午写的这个代码吧。
JSP页面主要代码(由于主要为了测试,就把js一起写在jsp页面里面了):
<script type="text/javascript">
$(document).ready(function()
{
$.post("getProvinces",function(data,textStatus)
{
var dataObj=eval("("+data+")");
for(var i=0;i<dataObj.length;i++)
{
var $option=$("<option></option>");
$option.attr("value",dataObj[i].id);
$option.text(dataObj[i].name);
$("#proviceId").append($option);
}
},"json") ;
$("#proviceId").bind("change",function()
{
var ids=this.value;
if(ids==""){return;}
$.post("getCitys",{pid:ids},function(data,textStatus)
{
var dataObj=data;
$("#cityId option[value!='']").remove();
for(var i=0;i<dataObj.length;i++)
{
var $option=$("<option></option>");
$option.attr("value",dataObj[i].id);
$option.text(dataObj[i].name);
$("#cityId").append($option);
}
},"json")
});
});
</script>
省份:
<select name="province" id="proviceId">
<option value="">----请选择---</option>
</select>
市区:
<select name="city" id="cityId">
<option value="">----请选择---</option>
</select>
下面看下Struts2里面相应的Action代码:
public class ActionAction extends ActionSupport {
private int pid=1;
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
/**
*数据初始化(由于主要为了测试,没有连接数据库了,直接将数据保存在java类的静态变量里面)
*/
public void init() {
ListDate.dateC.clear();
Provice p = null;
City c = null;
for (int i = 1; i <= 5; i++) {
p = new Provice();
p.setId(i);
p.setName("广西" + i);
for (int j = 1; j < 6; j++) {
c = new City();
c.setId(j);
c.setName("桂林" + j);
p.getListC().add(c);
}
ListDate.dateC.add(p);
}
}
public void getProvinces() {
init();
List<Provice> listP = new ArrayList<Provice>();
listP = ListDate.dateC;
JsonConfig config = new JsonConfig();
config.setExcludes(new String[] { "listC" });
JSONArray listparray = JSONArray.fromObject(listP, config);
try {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.write(listparray.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
public void getCitys() {
System.out.println("进来了吗dd:"+pid);
try {
init();
List<Provice> listP = new ArrayList<Provice>();
listP = ListDate.dateC;
List<City> listC = new ArrayList<City>();
for (Provice p : listP) {
if (p.getId() == this.pid) {
listC = p.getListC();
break;
}
}
JSONArray jsonarry = JSONArray.fromObject(listC);
HttpServletResponse response = ServletActionContext.getResponse();
System.out.println(jsonarry);
response.setCharacterEncoding("utf-8");
response.getWriter().write(jsonarry.toString());
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
下面看下struts.xml里面的主要配置:
<action name="getProvinces" class="com.action.ActionAction" method="getProvinces">
</action>
<action name="getCitys" class="com.action.ActionAction" method="getCitys">
</action>
主要关键代码就这些。主要为了提供给在这方面初学者。望高手勿喷!
相关文章推荐
- SSH三大框架集成中,使用jQuery框架 Ajax技术返回json格式的数据(二)
- Struts2 使用ajax访问action,返回json格式数据,提示error:There is no result type defined for type 'json'
- 使用Ajax发送Struts2请求返回JSON数据格式
- Struts2引用的jar包版本为2.0.9的,该版本没有json包,如何使用ajax返回json数据到页面
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及文件上传的部分
- struts2学习笔记--使用struts2插件实现ajax处理(返回json数据)
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及非文件上传的部分
- 客户端使用Ajax访问struts2 , struts2如何返回一个json数据!json-lib与flexjson
- Ajax技术--服务器返回数据格式(HTML,XML,JSON)
- 久违的json使用大法 (通常Ajax希望返回多个键值对,可以用将要返回的数据先封装到一个对象中,再将这个对象转为json格式)
- ajax根据ID查询数据库并返回Json格式数据返回js,使用append显示到页面。判断json值为[]或者[[]]的问题。
- struts2 + ajax(从后台获取json格式的数据返回到前端,然后前端用jquery对json数据进行解析)
- springmvc4整合AJAX使用@ResponseBody注解返回JSON数据格式
- FireFox中使用JQuery的ajaxfileupload插件返回JSON格式数据提示保存的解决方法。
- asp.net中Ajax技术使用Json格式传递数据
- 使用jQuery发送POST,Ajax请求返回JSON格式数据
- jQuery中使用Ajax获取JSON格式数据
- ssh2与ajax结合之返回json数据异常:org.apache.struts2.json.JSONException
- Ajax使用JSON数据格式案例
- Struts2系列之 (1)通过JSON插件返回ajax数据