ajax请求返回的数据看不到回调函数没有执行也没报错

项目用的是ssh,使用jquery的$.post访问struts2的Action,哪里都没有报错,可就是没有结果。

现在$.post要返回保存着权限的集合Collection<Privilege>,权限类Privilege和用户类User相互关联,也就是Privilege里使用set集合保存着拥有这个权限的用户Set<User>,用户User里也使用set集合保存着用户有的权限Set<Privilege>。数据都到action里了,但是回调函数没有执行,并且使用浏览器调试也没看到返回的数据,最后找了半天,原因如下:

jquery在解析返回的Collection<Privilege>集合时,看到里面有一个Set<User>,就会去得到集合中的数据,但是Collection<Privilege>是service里的一个方法返回的,而这个时候spring的事务已经结束,也就不会查到Set<User>中的数据。jquery解析空的集合就会出错,所以得不到数据。

解决办法:在Privilege里的getUser()方法加上这个注解@JSON(serialize=false),这样jquery在解析的时候就会忽略这个集合中的数据。当然,如果数据要用到,那就要在service中把这些数据先查到,放到集合中。

(0)

相关推荐

  • Javascript基于AJAX回调函数传递参数实例分析

    本文实例讲述了Javascript基于AJAX回调函数传递参数的方法.分享给大家供大家参考,具体如下: 前面介绍了<javascript实现html页面之间参数传递的四种方法>,这里针对ajax参数传递做一分析. 在Javascript 中,特别是在AJAX中,回调函数常常是一个函数名,没有地方放入参数,如下面的AJAX代码,在成功后将调用回调函数callback,但callback是有参数的,如何把参数传进来呢? var callback = function(p1){ //do somet

  • ajax异步回调函数中给外部变量赋值的问题探讨

    复制代码 代码如下: <!doctype html> <head> <meta charset="utf-8"> </head> <body> <script src="http://localhost/UIBMSPHPProj/public/js/jquery-1.8.2.min.js"></script> <script> $(function(){ var str

  • jquery ajax的success回调函数中实现按钮置灰倒计时

    主要是实现异步手机发送短信成功之后在ajax的success回调中实现将发送按钮置灰并倒计时,刚开始一直报js错误,问题可能出在于调用ajax之后this被更新,随意在这之前先把this对象赋给一个变量就没问题 按钮倒计时代码 复制代码 代码如下: var wait = 60; get_code_time = function (o) { if (wait == 0) { o.removeAttribute("disabled"); o.value = "免费获取验证码&qu

  • jQuery Ajax Post 回调函数不执行问题的解决方法

    今天在写一个检查用户名的功能时,使用的是jQuery.post( url, [data], [callback], [type] )这个函数,但是发现其中的回调函数不能执行. 先来看看我的代码: 前台代码: <script type="text/javascript"> function checkUser() { var user = $('#<%=txtUser.ClientID %>').val(); $.post('checkUser.ashx', {

  • 解决ajax回调函数返回的字符串乱码问题

    ServletActionContext.getResponse().setContentType("text/json;charset=UTF-8");//解决乱码问题,没有这句,回调函数的内容可能乱码 ServletActionContext.getResponse().getWriter().write("字符串内容");//在写入之前执行上面一句,可以解决乱码

  • ajax回调函数参数传递正确方法

    属性方法是可以带参数: 复制代码 代码如下: function ClassX(name) { this.name = name; ClassX.prototype.show = function (param) { alert(this.name + " " + param); }; } var o = new ClassX("name"); o.show("param");//name param 但是,上面是虽然是直接在函数签名中定义了参考,

  • Jquery版本导致Ajax不执行success回调函数

    对于使用ajax来请求数据已经不是第一次使用(一直觉得也就那么回事),就在昨天居然遇到了一个问题?项目中需要用到ajax来进行数据的请求,于是三下五除二的将ajax代码拷贝到项目中,前端,后台数据处理完毕,测试(心想可以休息下下了),谁知数据成功返回.前端没报错,后台也没错,硬是没有执行success回调函数,心凉了一半. 接下来就是找原因,查看原先代码,百度,json格式检查,终于发现问题所在 罪魁祸首居然是Jquery版本所引起的. Jquery版本:jquery-1.9.0.min.js

  • ajax请求返回的数据看不到回调函数没有执行也没报错

    项目用的是ssh,使用jquery的$.post访问struts2的Action,哪里都没有报错,可就是没有结果. 现在$.post要返回保存着权限的集合Collection<Privilege>,权限类Privilege和用户类User相互关联,也就是Privilege里使用set集合保存着拥有这个权限的用户Set<User>,用户User里也使用set集合保存着用户有的权限Set<Privilege>.数据都到action里了,但是回调函数没有执行,并且使用浏览器调

  • jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签

    废话不多说了,直接给大家贴代码了,具体内容如下所示: // js <script type="text/javascript"> function myBtn_f() { var cnt = $('#myCnt').val(); syncAjax('myAjax.html', { 'cnt' : cnt }, function(result) { if (100 == result.statusCode) { var data = result.lst; var $d =

  • ajax请求后台接口数据与返回值处理js的实例讲解

    ajax的代码,用的是jquery的 ajax: $.ajax({ url: "/test.php",//后台提供的接口 type: "post", //请求方式是post data:{"type":"1", //这是你要传给后台的data值 "t":"c4552111" }, dataType: "json", //数据类型是json型 success: funct

  • 基于ajax后台返回的数据为空前台显示出现undefined的解决方法

    之前自己做的一个图书管理系统,显示图书借阅排行榜,因为翻译在数据库中有为空的字段,故前台显示会显示undefined. 以下贴上部门代码: $(document).ready(function () { $("#rankTable tbody").html(""); var id = 1; $.ajax({ url:"bookInfo/bookInfo_rank.action", type:"POST", data:{}, d

  • java 通过发送json,post请求,返回json数据的方法

    实例如下所示: import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONArray; impo

  • Mysql数据库delete操作没报错却删除不了数据的解决

    1.在操作页面执行删除操作,但没有删除成功,删除过程无报错(以下为删除操作的控制台日志) 2.在数据库执行删除操作 表数据 执行删除语句删除staffId为3的数据 结果却没有删除成功 3.原因 staffId为3的数据的flag为Null,虽然delete from staff where staffId=3 and flag != 1语句中的flag != 1说明了删除除1以外的数据,但却没有删除flag为Null的数据 4.解决办法 把staffId为3的flag置为0 再次执行delet

  • 如何将ajax请求返回的Json格式数据循环输出成table形式

    首先,Ajax请求数据,(用的是Jquery的Ajax) 复制代码 代码如下: <script> $(function(){ $('#test').click(function(){ $.ajax({ url:'__APP__/Article/jsonTest', type:'post', success:function(data){ var item; $.each(data,function(i,result){ item = "<tr><td>&quo

  • ie发送ajax请求返回上一次结果的解决方法

    问题出现原因: 1. ie下面只会建立一次 ajax 请求,将响应结果放在浏览器缓存里 下次调用该ajax请求时 从缓存里读取 get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题 2. 火狐下面 每次激活事件 都会重新建立一次ajax请求 解决方法: 1: 在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数 在javascript发送的URL后加上t=Math.random() 例如这样:URL

  • Nginx中404页面的配置及AJAX请求返回404页面的方法

    404页面基础配置 404错误是WWW网站访问容易出现的错误.最常见的出错提示:404 NOT FOUND.404错误页的设置对网站SEO有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛.404页面的目的应该是告诉用户:你所请求的页面是不存在的,同时引导用户浏览网站其他页面而不是关掉窗口离去.搜索引擎通过HTTP状态码来识别网页的状态.当搜索引擎获得了一个错误链接时,网站应该返回404状态码,告诉搜索引擎放弃对该链接的索引.而如果返回200或302状态码,搜索引擎就会为该链接建

随机推荐