你这只是个请求的例子,没有返回值的解析,success,failure,error方法呢?$(document).ready(function(){
$.ajax({
type: 'POST',
url: "roleright_left.action",
success: function() {
},
error: function() {
}
});
});
$.ajax({
type: 'POST',
url: "roleright_left.action",
success: function() {
},
error: function() {
}
});
});
// data 可能是 xmlDoc, jsonObj, html, text, 等等...
// data就是服务端返回的json字符串,解析data
}
type: 'POST',
url: url,
dataType:"json",
success:function(msg){
alert("ajax返回成功"); alert("数据:"+msg); },
error:function(){ alert("ajax返回错误了"); }
});这是网上的原方法,我大概明白是执行了url中的action的到一个回调函数msg可我的action
/**
* 权限部分
* @return
*/
public String left(){
SysRole role=new SysRole();
role.setRoleId(3);
list = ser.findbyrRole(role);
/* if(roleright!=null){
return "findbyidsuccess";
}*/
System.out.println("-----------------执行了------------");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("appliction/json;charset=utf-8");
JSONArray json=JSONArray.fromObject(list);
try {
response.getWriter().print(json.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "left";
}
页面应该怎么调用这个list呢??
error:function(){ alert("ajax返回错误了"); }
这个框是跳出来了。。额
PrintWriter out = response.getWriter();
out.write(json.toString());
out.flush();
out.close();
SysRole role=new SysRole();
role.setRoleId(3);
list = ser.findbyrRole(role);
/* if(roleright!=null){
return "findbyidsuccess";
}*/
System.out.println("-----------------执行了------------");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("appliction/json;charset=utf-8");
JSONArray json=JSONArray.fromObject(list);
try {
response.getWriter().print(json.toString());
//按照你说的方法,加到这里了。
PrintWriter out = response.getWriter();
out.write(json.toString());
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "left";
}
--------------------------------------------
继续 error:function(){ alert("ajax返回错误了"); }。。
http://topic.csdn.net/u/20110922/14/7e7f5e69-1c9a-47ac-bfdb-ac6ac4488445.html?seed=585836966&r=75663286#r_75663286,有空帮我看看把,呵呵
再把return "left";去掉
如果你用的是struts2.的话,那就这样写
private List list;@JSON(name="tict")
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
写一个私有的list,生成get,set。。然后再get方法前面加上@JSON(name="list")
当然了,需要你的这个action是继承json-default顺便说一句你得导struts2-json-plugin-2.2.1.1.jar
如果还有问题请再下面跟帖
写错了,,,,应该是
@JSON(name="list")
<action name="getOneSupplier" class="ContractAction" method="getOneSupplier">
<result type="json"></result>
</action>
</package>
给个参考
public String checkCardNo(){
this.list = this.infCardService.findCard(null, this.searchWord,this.getPageNo(), -1);
// if (this.list != null && this.list.size() > 0) {
// this.nullTag = "N";
// }else{
// this.nullTag = "Y";
// }
return SUCCESS;
}
//-------------------------------------我是华丽的分割线------------------------------\\
private List list;
@JSON(name="list")
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
function checkCardNo(obj){
shuzi(obj);
if(obj.value.length > 0){
$.ajax({
type: "POST",
url: "checkJson/checkCardNo.action",
data: {"searchWord":obj.value},
dataType:"json",
success: function(json){
var nullTag = json.list;
var list = new Array();
list = nullTag;
alert(list.length);
// var nullTag = json.nullTag;
// if(nullTag=="N"){
// alert("卡号已存在!");
// $("#ticNo").val("");
// $("#ticNo").focus();
// }
},
error:function(){
alert("操作失败");
}
});
}
}
最后alert出来的是1,因为我的后台的list确实只有一个元素
@Namespace("/checkJson")
@Results({
@Result(name = "success",type="json")
})因为我用的struts2注解,所以根本就没有struts.xml
所谓的配置都是写在action类里如果你要用struts2注解,需要导struts2-convention-plugin-2.2.1.1.jar。
Unable to load configuration. - package - jar:file:/F:/apache-tomcat-6.0.20/webapps/crm/WEB-INF/lib/struts2-json-plugin-2.2.1.jar!/struts-plugin.xml:8:59
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3800)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4450)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:987)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:909)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:495)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: Unable to load configuration. - package - jar:file:/F:/apache-tomcat-6.0.20/webapps/crm/WEB-INF/lib/struts2-json-plugin-2.2.1.jar!/struts-plugin.xml:8:59
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)
... 29 more
Caused by: The package name 'json-default' at location package - jar:file:/F:/apache-tomcat-6.0.20/webapps/crm/WEB-INF/lib/struts2-json-plugin-2.2.1.jar!/struts-plugin.xml:8:59 is already been used by another package at location package - jar:file:/F:/apache-tomcat-6.0.20/webapps/crm/WEB-INF/lib/struts2-json-plugin-2.2.1.1.jar!/struts-plugin.xml:8:59 - package - jar:file:/F:/apache-tomcat-6.0.20/webapps/crm/WEB-INF/lib/struts2-json-plugin-2.2.1.jar!/struts-plugin.xml:8:59
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.addPackageConfig(DefaultConfiguration.java:124)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:486)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:275)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
... 31 more
method="checkFile">
<result name="success">help.jsp</result>
<result name="error">help.jsp</result>
</action>
类似这样的写法没一点问题实在不行你手工拼个json传下试试。
Map map = new HashMap();
map.put("id",100);
map.put("name","a");
list.add(map);
//JSONArray这个类要导入2个jar包,名字我忘记了,自己从网上找把。。
response.printWriter().print(JSONArray.fromObject(list).toString());
$.getJSON("xxx.action",function(data)
{
var str = "";
for(var i = 0;i < data.length;i++)
{
str += data[i].id + "" + data[i].name + "<br/>";
}
document.write(str);
});
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json");
response.setCharacterEncoding("UTF-8");
List<News> list_news = shouyeService.queryNews(3, uuid);
JSONArray jsonString =JSONArray.fromObject(list_news);
try {
PrintWriter out = response.getWriter();
out.print(jsonString.toString());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
用到的包
json-lib-2.4-jdk15.jar整合包下载 http://download.csdn.net/download/longzheaotian/3330120
<script type="text/javascript" src="jquery-1[1].2.1.pack.js"></script>
<script type="text/javascript">
function select(x) {
var selectname = "table1";
var urlvalue = "table1_select";
if(x==1){
urlvalue = urlvalue + "?selectid="+$("#table1 option:selected").get(0).value;
selectname = "table2";
}else{
}
$.ajax({
url : urlvalue,
type : 'post',
dataType : 'json',
contentType : 'application/json:charset=utf-8',
cache : false,
success : function(data) {
var obj = data;
document.getElementById(selectname).options.length = 0;
$.each(obj, function(key, val) {
var op = new Option(obj[key].name, obj[key].id);
document.getElementById(selectname).options.add(op);
});
}
});
}
window.onload=select;
</script>
action部分:
public void select() throws UnsupportedEncodingException {
list = table1Servcie.getList();
HttpServletRequest request = ServletActionContext.getRequest();
request.setCharacterEncoding("UTF-8");
String seledid = new String();
//这里如果你从jsp传来的如果是中文的话...你明白,应为不能json简单迭代出级联表,只能再查一遍了
if(request.getParameter("selectid")!=null){
seledid=new String(request.getParameter("selectid").getBytes("ISO-8859-1"));
System.out.println(seledid);
list = table2Service.getlList(seledid);
System.out.println(list.size());
}
//设置json配置,防止实体类中级联的死循环,擦json对级联的操作那么不方便T_T
JsonConfig cfg = new JsonConfig();
cfg.setJsonPropertyFilter(new PropertyFilter()
{
public boolean apply(Object source, String name, Object value) {
//table2s实体类中set名字
if(name.equals("table2s")||name.equals("table1")) {
return true;
} else {
return false;
}
}
});
//转成json数组,需要jar包支持
JSONArray jsonArray = JSONArray.fromObject(list,cfg);
//用servlet往页面返回
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
PrintWriter out = null;
try {
out = response.getWriter();
out.print(jsonArray);
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
out.close();
}
}擦,折腾这么多天实现了终于,谢谢大家。有不明白的可以联系我,这是有级联表的操作,不用级联会简单,对了别忘记导相应的json包~~~
<input type="text" value="让我崩溃3天的json+struts2+jquery:" size="40">
<select id="table1" onchange="select(1);"></select>
<input type="text" value="让我:" size="5">
<select id="table2" onchange="select(2);"></select>
int sub;
// zzjgcode
String zzjg = "321302109";
int zzjgNum = zzjg.length();
if(zzjgNum<=9){
sub = zzjgNum+3;
cbfList = jdfxService.getAllCbf(sub, zzjg);
}else{
sub = zzjgNum+2;
cbfList = jdfxService.getAllCbf(sub, zzjg);
}
System.out.println(cbfList.size());
return SUCCESS;
}<script lang="javascript" type="text/javascript">
$(document).ready(function () {
$('#jqChart').jqChart({
title: { text: '柱形图示例' },
axes: [
{
location: 'left',//y轴位置,取值:left,right
}
],
series: [
//数据1开始
{
type: 'column',//图表类型,取值:column 柱形图,line 线形图
data: , , , , , , , ]//数据内容,格式,,......]
},
]
});
});
</script>
把读取出来的值,循环赋个上面那个data中的一月,50(数量);
不过jquery,中的代码不会写。