Ajax 板


LINE

原本的程式实在是太乱了 引用JS档前还要先指定一个Global Variable 结果现在出问题了 要同时处理多笔资料 打算全部砍掉重练 用OOP来写 不过现在遇到了一个问题 因为这个Object 有利用AJAX 去取得一些资料 所以并不能随call随用 还要指定一个callback function 因为要考虑到错误处理的方式 和 UI 的动态显示 所以可能需要两个callback function 一个是用来存资料 一个是用来更新UI (我想把这js和网页页面完全独立开来,因此不能包在一起) 但是不知道各位前辈有什麽方法比较好去实做呢? -- I'm not the only one, To crash into the sun, and live to fight another day. Like a super nova, that old life is over. I'm here to stay. Now I'm gonna be, Invincible. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.244.14
1F:→ Fonger:我有想过在object init时指定一个callback function 11/15 12:35
2F:→ Fonger:然後内部的ajax的callback function开头再call init那个 11/15 12:36
3F:→ Fonger:不过总是感觉有一些缺陷 11/15 12:36
4F:推 mmis1000:多个callback可以啊?只是会依序执行 11/15 12:45
5F:→ mmis1000:等等,你是指一个ajax,两个callback? 11/15 12:46
6F:→ mmis1000:function(){a();b();} 用匿名函数转发呢? 11/15 12:48
7F:推 mrbigmouth:不是很懂原po要的 但jQuery的deferred很好用 要几个 11/15 14:16
感谢!! 今天又学到新东西了 deffered!!!!!!!!! 感动~~ 虽然还是没解决 等等有空把全部的思路全部打上来
8F:→ mrbigmouth:callback都临时挂即可 11/15 14:16
9F:推 s540421:原PO是要说某A资料因为透过AJAX取得所以不能立刻使用? 11/15 20:04
10F:→ s540421:我理解没错的话,把非同步处理模式改成同步处理就行了 11/15 20:05
11F:推 mrbigmouth:楼上的作法虽然方便但不建议 用Deferred物件很方便的 11/16 01:13
12F:推 s25g5d4:如果伺服器卡一秒 浏览器也会跟着卡一秒没有回应喔... 11/16 01:51
※ 编辑: Fonger 来自: 140.113.244.14 (11/16 07:43)
13F:→ s540421:重要资料的话server还没回传後续动作也都无法运作 11/16 10:58
14F:→ s540421:看重要性来决定要同步还是异步吧 11/16 10:59
15F:→ s540421:还有环境也会影响要不要选用同步,如果程式要跨多种浏览器 11/16 11:17
16F:→ s540421:使用就不建议用同步,反之若是有限环境就可以考虑 11/16 11:18
17F:→ s540421:而jQuery的ajax object有内建deferred object,可以直接 11/16 11:27
18F:→ s540421:串上想挂的callback 11/16 11:27
19F:→ s540421:像是$.ajax(...).done(function(){...}); 11/16 11:28
20F:→ s540421:不用再额外管理deffered object 11/16 11:29
21F:→ Fonger:可不可以我var a = new MyOJ(params...) 11/16 11:47
22F:→ Fonger:然後a.someMethod(xxx).done(qqq) ? 11/16 11:47
23F:→ Fonger:someMethod是a的prototype function 11/16 11:47
24F:推 mrbigmouth:可以 11/16 19:44
25F:→ mrbigmouth:你在someMethod new一个deferred object回传即可 11/16 19:44
26F:→ mrbigmouth:如果使用"同步"的方式 在等待伺服器回应的时间页面是 11/16 19:45
27F:→ mrbigmouth:完完全全动不了的状态 连卷轴都卷不动 使用者感受会 11/16 19:45
28F:→ mrbigmouth:非常糟糕 11/16 19:45
我现在遇到了一个问题 大概如下 <myscript.js> function MyOJ(param) { this.predata = param this.dataA = null // 等待ajax 取得资料 this.dataB = null // } MyOJ.prototype = { init: function() { this.getDataA() } getDataA: function() { return $.post(urlB,this.getDataB.bind(this)) }, getDataB: function(dataA) //ajax A的回传资料 { this.dataA = dataA return $.post(urlC,this.initFinish.bind(this)) }, initFinish: function(dataB) //ajax B的回传资料 { var dtd = $.Deferred() this.dataB = dataB dtd.resolve() return dtd } } <MyHTML.html> <script> var a = new MyOJ(params) a.getDataA().done( getA_Callback) //回报UI用 .fail( getA_Fail ) a.getDataB().done( getB_Callback) //回报UI用 .fail( getB_Fail) a.initFinish.done( myInitFinish ) //模组已全部载入 可以使用了 a.init() function myInitFinish() { $('#dataA').text(a.dataA) //保证有资料 $('#dataB').text(a.dataB) //保证有资料 } </script> 意思就是 当程式呼叫 init 时, js 那边开始进入取得资料的模式 同时我可以在外部挂载一些function 能让UI知道下载的进度 不过红字部分出了问题 因为Deferred物件要在执行後才会return 但是,我现在还没init 而且这些function, 应该是给ajax完成後在内部才执行的(同时函数内参数就是回传值) 虽然这段程式码有严重错误 但是应该可以表现出我想要达到的效果了~~ 麻烦各位大大指点迷津QQ... ※ 编辑: Fonger 来自: 61.230.168.152 (11/17 08:59) ※ 编辑: Fonger 来自: 61.230.168.152 (11/17 09:00)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP