问题如下: |
|
2分 |
我这边也遇到过这种情况 是jquery版本的问题 一开始用的是 jquery-1.4.1.min.js 后来用的jquery-1.6.2.min.js 可以的 你试试看
|
我用的jquery1.7的 那我试试其他版本
大侠们 救命啊 |
|
1分 |
换个版本的jquery试试
|
2分 |
response.setContentType(“application/json;charset=UTF-8”);
|
回复4楼:
加了 还是一如既往的不行··· |
|
换版本么有? |
|
1分 |
dataType : “JSON”,
中JSON改为小写呢 |
1分 |
我记得jquery的dataType应该都是小写字母的
|
4分 |
本来想偷懒的,写个完整的,如果OK,记得结贴。
List<Project> list=applicationService.getProjectName(); Iterator<Project> iterator = list.iterator(); StringBuffer jsonStr = new StringBuffer(); while (iterator.hasNext()) { Project project = iterator.next(); jsonStr.append("{"id":"").append(project.getId()) .append("","name":"").append(project.getName()) .append(""}"); if (iterator.hasNext()) jsonStr.append(","); } response.setContentType("application/json;charset=UTF-8"); response.getWriter().write("[" + jsonstr + "]"); return null; |
2分 |
以前我遇到过这样的问题,看是不是因为action返回的信息有错
|
换成小写了 也不行 |
|
换成新版本后 也能进action 我设了断点 也能进去 说明ajax也能用 就是不到success方法 |
|
放心 每个回答的我都会给分 一会加分 |
|
灌水帖 没分 |
|
也换<script language=”javascript” src=”js/jquery-1.4.2.js”></script>了
dataType:”json”也小写了 response.setContentType(“application/json;charset=UTF-8”);也设置返回类型是json了 这咋这么难呢 我要是吧dataType设置成text就没问题 谁知道咋看返回的东西的 既然是parsererror 那肯定是返回的不是json格式的 那我write()里面写的是标准的json,也不到success方法 ,为啥啊为啥啊 |
|
2分 |
直接返回[{“id”:1283,”name”:”Internal CR Print Smart Grade”},{“id”:1284,”name”:”TAL PLM Import & Export”}]找个字符串能欧诺个json拿到不,
我这边直接写找个字符串当json接收没问题 |
你后边写那个return null干啥
|
|
2分 |
你把dataType改成text得到的结果是啥,发出来看看,怎么会是个html呢
|
因为是struts1 用ajax来异步获取List这里必须是return null 否则你随意return个 strut就会往配置里找 就可能到其他界面,return null就可以避免, 然后把返回的值写到response里 关键是把json写进去 竟然传不到success方法 |
|
怎么发图片啊 我怎么发布上去 这里我发现个问题 要是返回的text 那String数据在那html里 而且在<tr><td>里
|
|
2分 |
那找个问题应该是你处理逻辑里报了错了吧!
你配置错误跳转页面了吧,返回的应该是你的错误跳转页面吧,不然text返回的应该是和json一样的字符串的 |
图片如下
[img=http://my.csdn.net/my/album/detail/1111239#][/img] [img=http://my.csdn.net/my/album/detail/1111239][/img] |
|
晕 图片咋没上去 我传相册了啊
[img=http://my.csdn.net/my/album/detail/1111239#][/img] |
|
2分 |
你那个返回的东西不对的,中间肯定有问题!是不是还有其他的处理!
|
4分 |
第一步 :在后台打印转换后的json的数据,看看数据的格式是否正确
第二部 :查看前台是否引入了正确的js文件 第三步 :编写的js是否正确 据分析楼主第一步应该没有问题。 |
2分 |
用9楼的方式还是不行,还了jquery版本还是不行的话,建议还是用firebug调试,看看到底jsp中jquery方法执行到那里报错了。 把这段 error: function(res, text) { 拿掉。 |
2分 |
error: function(res, text,aa) {
alert(“错误信息:” + text +aa); } 看看aa打印出来是什么,这个里面的信息才是你的准确错误信息,text只是错误状态 |
打印的信息的parseerrorundfine |
|
http://img.my.csdn.net/uploads/201204/10/1334043929_6711.jpg
|
|
2分 |
List<User> list = this.getUserService().getUserDao().getList( "from User"); Map hashMap = new HashMap(); hashMap.put("success", true); hashMap.put("totalProperty", list.size()); List root = list; JSONArray ja = JSONArray.fromObject(root); hashMap.put("root", ja); JSONObject jo = JSONObject.fromObject(hashMap); try { System.out.println(jo); response.getWriter().print(jo); } catch (IOException e) { e.printStackTrace(); } 你试试这种格式 |
2分 |
!
首先 ajax别用post提交 用get 其次你考虑给ajax加同步锁 |
换成get也试了 同步锁也设了 还是不行 |
|
[{“id”:1283,”name”:”Internal CR Print Smart Grade”},{“id”:1284,”name”:”TAL PLM Import & Export”}
打印出来的是这些 list里我放的是project对象,值有好多 是不是因为长度的问题呢 因为数据有500条(id,name)但是也不对呀 我就放一个 (“{“result”:”true”, “msg”:”删除成功”}”);这也不到success |
|
10分 |
hashMap.put(“success”, true); |
2分 |
如果都不行的话,楼主可能是你return null;这里出问题了,貌似我以前也出现过这样的问题,你改成不要返回值的试试。。。
|
如果不要return null 怎么写呢 用的struts1 exectute方法必须return个ActionForward |
|
2分 |
return null ;有问题吧,我这个和你很类似,就可以。你可以看看~~
public void findBranchorg() { HttpServletResponse response =ServletActionContext.getResponse(); response.getWriter().print(json); } catch (IOException e) { $.ajax({ |
那怎么到你自定义的方法呢 你url里没有写findBranchorg这方法吧 |
|
你那个是struts2的写法 struts1没有ServletActionContext |
|
另外 我发觉这问题可能是我这项目的问题 ,我在另一项目里 用struts2 就没问题,能进success 但是这个死活进不去 除非改成text类型的 诡异啊诡异,text就能返回json就不行,在另一个项目里text json都没问题
json里就写一简单的json格式的字段 |
|
2分 |
text能返回,可能就是格式有问题吧。
以前我在做项目的时候也碰到过这个问题,因为当时赶的比较急,所以把一个json分开返回了、 |
2分 |
$(“#brachOrg”).change(function(){ }); 类似这种! |
那我用ajax的时候 到后台 把list放到request范围内 再在页面中把list的值遍历到下拉菜单 可以实现吗 |
|
44分 |
毛都没长全就学人家用jquery ajax 大神来给你解决吧 让你这狗日的安心吃饭饭吧 犹豫你用的是$.ajax方法 异步请求进入服务端 服务端返回后要判断 返回后进入哪个方法 (是success方法或还是fail方法) 所以你才返回的时候 要写个boolean类型的变量 名字可以写成success 就这么写吧 定义:
Map result = new HashMap(); result.put(“success”, true); result.put(“list”, list); JSONObject json = JSONObject.fromObject(result); response.getWriter().write(json); 拿去试试 有问题加我Q 632167558 |
3分 |
看了 你用text返回的时候返回的不是有td标签的东西吗?说明你中间是不是用了拦截器等东西吧你返回的东西修改了,你在页面拿到的东西已经不是json的东西了,他按json去拿的话肯定就不对了的
|
我用struts2的时候也是这样…ajax也执行了,但是就是到不了success…到现在还没找到原因= = 我在等你的答案…
|
|
嗯 你说的有理 我这中间确实有拦截器拦截的 因为用的struts1,我看看拦截里怎么处理的 |
|
我按照你说的 把“true”这字符串写进去 然后到success : function(data) { |
|
大家看看 是不是拦截器这里出了问题 代码如下: web.xml里
<filter> <filter-name>sitemesh</filter-name> <filter-class> com.opensymphony.module.sitemesh.filter.PageFilter </filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>*.fb</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.fb</url-pattern> </filter-mapping> <servlet> <servlet-name>GetEmployeePicture</servlet-name> <servlet-class> com.freeborders.psa.servlet.GetEmployeePicture </servlet-class> </servlet> <servlet-mapping> <servlet-name>GetEmployeePicture</servlet-name> <url-pattern>/individual/getEmployeePicture</url-pattern> </servlet-mapping> <filter> <filter-name>clickstreamFilter</filter-name> <filter-class> com.opensymphony.clickstream.ClickstreamFilter </filter-class> </filter> <filter-mapping> <filter-name>clickstreamFilter</filter-name> <url-pattern>/*</url-pattern> 大家看看 那个是拦截返回值是json格式的 导致json格式的里面增加html |
|
学习。。。不会。。。。
|
|
你这个只能看到你有几个过滤器,但是过滤器里做啥事情不知道啊 |
|
你把PageFilter和ClickstreamFilter发出来看看
|
|
那两个filter的class 是com.opensymphony.clickstream.ClickstreamFilter |
|
有可能就是m.opensymphony.module.sitemesh.filter.PageFilter的问题,你先把这个过滤器去掉看看你得到的结果对不对呢
|
|
response.getWriter().write(array.toString()); 是你这个没关闭 和过滤器没关系的
response.getWriter().close(); 昨天不是给你写出来了么 |
|
是response里的东西,不需要自己显示的关闭的,response失效前会自动处理的 |
|
2分 |
用firebug调试时,可以打开控制台,找到你的页面的代码,然后一步一步的跟踪,看传到后台的参数和返回到前台的参数是不是你想要的,
|
请问楼主最后怎么解决的啊
|