新足迹

 找回密码
 注册

精华好帖回顾

· 参加征文: 澳洲工作历程回往(全部更新完毕) (2009-9-10) miss99 · 大家都听什么曲子?- - 晒晒你MP3里的曲单(要真实) (2008-9-29) 老陶
· 越南绝美小村庄“美奈”攻略 (2011-12-22) mjyang · [全球金融危机对我和我身边的人影响征文] 多收了三五斗 (2008-10-26) cotta
Advertisement
Advertisement
查看: 1501|回复: 9

JQuery AutoComplete 不刷新后台更新后数据 [复制链接]

发表于 2011-10-3 12:34 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
情况是这样di:
一个free textbox用auto complete来显示可用item list. 比如{item1, item2,item3}
另一个页面将item1 disable(db中).
回到auto complete 页面备选item list 应该变成(item2,item3}
但是仍旧显示{item1, item2,item3}。
貌似auto complete 直接用local cache 并没有postback 重新从db里读取备用item list.
试了下flushcache(),但是debug时候报错。
这应该是个比较常见的问题吧,但是放狗搜了一下没找到好的解决方法~~~
呼JS高手~~~~分分伺候

忘了代码:
$('.itemStyle').autocomplete({
               
                source: function (request, response) {
                    $.ajax({
                        url: "../Autocomplete.aspx",
                        dataType: "json",
                        data: {
                            term: request.term,
                            list: 'item'
                        },
                        success: function (data) {
                            response($.map(data, function (item) {
                                return {
                                    label: item.label,
                                    value: item.value
                                }
                            }))
                        }
                    })
                },
                focus: function (event, ui) {
                    $('.itemStyle').val(ui.item.label);
                    return false;
                },
                minLength: 1, delay: 1000
            });

[ 本帖最后由 IsDonIsGood 于 2011-10-3 12:47 编辑 ]
Advertisement
Advertisement

发表于 2011-10-3 14:11 |显示全部楼层
此文章由 rumcoke 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rumcoke 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你的list item是否重新从数据库获取了一次 还是仍然使用之前在cache里那个list

评分

参与人数 1积分 +3 收起 理由
IsDonIsGood + 3 感谢分享

查看全部评分

发表于 2011-10-3 14:30 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
貌似仍旧读的是cache没有重新读取

发表于 2011-10-3 15:26 |显示全部楼层
此文章由 showen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 showen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
放眼看没什么问题,一般有caching都是"GET"引起的,所以试试 把这部分改改 url: "../Autocomplete.aspx",

你用webservice或者static method来实现。

评分

参与人数 1积分 +3 收起 理由
IsDonIsGood + 3 感谢分享

查看全部评分

发表于 2011-10-3 15:41 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不应该啊 不行先给url后加个随机数试试

评分

参与人数 1积分 +3 收起 理由
IsDonIsGood + 3 感谢分享

查看全部评分

发表于 2011-10-3 16:28 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
谢楼上xd,搞定了,问题出在ajax call上,autocomplete 没有问题。
ajax call 默认开启cache这样可以减轻server的负担。把cache设置成false就可以force postback了。
不过这意味着即使是相同的值每次都要query db,server的负担变重。不过还好是个小query.没有太大影响。

$('.itemStyle').autocomplete({
               
                source: function (request, response) {
                    $.ajax({
                        url: "../Autocomplete.aspx",
                        dataType: "json",
                        data: {
                            term: request.term,
                            list: 'item'
                        },
                       cache: false,
                        success: function (data) {
                            response($.map(data, function (item) {
                                return {
                                    label: item.label,
                                    value: item.value
                                }
                            }))
                        }
                    })
                },
                focus: function (event, ui) {
                    $('.itemStyle').val(ui.item.label);
                    return false;
                },
                minLength: 1, delay: 1000
            });

评分

参与人数 1积分 +4 收起 理由
atransformer + 4 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2011-10-3 16:42 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
最好在url或data上作区别 而保留cache

发表于 2011-10-3 16:59 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 鱼羊鲜 于 2011-10-3 16:42 发表
最好在url或data上作区别 而保留cache

大师指点,怎么做区别,我也不想去掉cache.但是不重新query怎么知道db那边的变化呢?

发表于 2011-10-3 20:32 |显示全部楼层
此文章由 mylt 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 mylt 所有!转贴必须注明作者、出处和本声明,并保持内容完整
由当前时间产生一个随机数加在url上,这样每次查询的参数都不一样,就不会用cache了

评分

参与人数 1积分 +1 收起 理由
rumcoke + 1 我很赞同

查看全部评分

发表于 2011-10-9 18:09 |显示全部楼层
此文章由 huangjoice 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huangjoice 所有!转贴必须注明作者、出处和本声明,并保持内容完整
给你的那些list的URL里面加个版本号吧,这样数据没有改变的前提下,就可以用cache的,版本号变了,URL不同了,自然会重新request server.

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部