Ajax 板


LINE

※ 引述《chocho1981 (o(.```.)o)》之铭言: : 标题: Re: [问题] 不换页更新图片资讯 : 时间: Tue Dec 29 23:46:32 2009 : : ※ 引述《chocho1981 (o(.```.)o)》之铭言: : : 我想请问一下这样的效果要怎麽做 : : 我目前有一个网页 里面有一张小图片 旁边一个按钮 : : 目前的情况是 : : 按钮按下==> ASP网页 ==> 资料库 ==> ASP网页 ==> 图片效果 : : (更改图片 (存入资料库) (读取图片 (显示图片) : : X、Y座标) 新的座标) 新的座标) : : : : 我这网页是一个类似大富翁的游戏 : : 但是每次按下按钮 整个网页就要重新读取一次 : : 有没有办法使用AJAX : : 让按钮按下後 只更新图片的座标就好 (同时要修改资料库的值)
1F:→ TonyQ:其实我更不解的是为什麽一个 request 每次都要扯ajax XD12/29 23:51
2F:→ chocho1981:因为不想要玩大富翁的时候整张地图在那边reload12/30 00:26
AJAX不是用来「使用」的,他是一种「设计模式」, 也就是符合某一种特定的流程就称之为ajax ,被用来「使用」的是 request 。 (请注意一下ajax用的iframe或 XMLHttpRequest ) 我说的是既然你都描述流程的状况下,描述需求比讲一句ajax来得重要很多。 你这篇文章的原始问题看起来是七零八落的, 你要更新图片的座标,那你的资料来源是怎麽要来, 原本页面要更新的是哪些项目,这些资料没有你是要别人怎麽回。 XD 都没有也没关系,来个现在运行的页面也会知道,什麽都没有当然就无从帮起。 : : 不好意思 再请教一个问题 : : 我目前是已经可以成功的做出我之前想要的程序了 : : 只是又有个问题 : : 当初我在做那个大富翁游戏时 按下按钮後 : : 会纪录下先前的座标 和之後的座标 : : 然後用 javascript 做出一个移动的效果 : : 当初是这样弄的 : : <1> : <body onLoad="process()"> : : <2> : : <SCRIPT LANGUAGE="JavaScript"> type="text/javascript" //这不会有影响 : : function process() { : setInterval("showTimer();",10); : } : : var i=0; : : function showTimer() { : : if (<%=rs5("locX")-session("locX")%>>=i){ : document.getElementById('move_pic').style.left=<%=session("locX")%>+i : i+=2; : } : if (<%=rs5("locY")-session("locY")%>>=i){ : document.getElementById('move_pic').style.top=<%=session("locY")%>+i; : i+=2; : } : if (<%=rs5("locX")-session("locX")%><=i*-1){ : document.getElementById('move_pic').style.left=<%=session("locX")%>-i; : i+=2; : } : if (<%=rs5("locY")-session("locY")%><=i*-1){ : document.getElementById('move_pic').style.top=<%=session("locY")%>-i; : i+=2; : } : ============================================================================== : : 节录程式码如上 : : 原本是可以作用的 : : 但是使用ajax的方法读取这样的程式码 : : 却发现一点效果也没有 : : 我自己是在猜想是不是用了ajax读取 : : 所以 <body onLoad="process()"> 这段变成无效了? : : 请教一下是因为这样吗? 还是有可能是其他我没发现的问题? : : 如果真是这样的话 可以有什麽解决方式呢? : : -- :



※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 210.240.131.71 : → TonyQ:你怎麽读取 , 读取了什麽 这两点要说啊... 12/29 23:53 : : <script language=javascript> : <!-- : function httpget(xUrl, method, sendData) { : /* 前略... /* : xmlhttp.open(method, xUrl, false); ^^^^^^ (这样的作法严谨来说不算ajax , 因为 AJAX 是指非同步的传输. ) /* 後略 */ : : } : : function getContent(objname, cid) : { : var obj = document.getElementById(objname); : if(obj) : { : obj.innerHTML = httpget("chk.asp", "GET", ""); 你这里的 response 不给 , 谁晓得你传回什麽跟要怎麽处理... : } : : } : : function postContent(objname, postdata) : { : var obj = document.getElementById(objname); : if(obj) : { : obj.innerHTML = httpget("chk.asp", "POST", postdata); : } : : } : : : --> : </script> : : 程式码主要如上列所示 : : 再配上一个按钮 和一个DIV标签 : : <input type="button" value"GO" name="B3" onclick="postContent('div1','B3=1');"> : : <div id=div1> </div> : : 按钮按下後去将资料送到chk.asp去作处理 : : 更新资料库後 一样由chk.asp这个网页秀出资料库中更新过後的数据 : : 大致上是这样~"~ : : ※ 编辑: chocho1981 来自: 210.240.131.69 (12/30 00:08) : → emn178:用ajax没有reload的话 body onload就只会执行一次 12/30 00:04 : → chocho1981:所以使用ajax就没办法用JS做动画效果了吗 QQ? 12/30 00:27 : 推 buganini:当然不是啊 你要找其他触发点 或用setTimeout之类的 12/30 02:39 : → emn178:showTimer中的变数应该由JavaScript去给定,才能配合AJAX使 12/30 09:25 : → emn178:用,然後在AJAX request结束後去呼叫process就行了 12/30 09:26 上面的推文跟三楼其实都已经讲到关键点 . 如果我是你 , 我会改写函式 var rsX="<%=rs5("locX")%>"; var rsY="<%=rs5("locY")%>"; var sessionX="<%=session("locX")%>"; var sessionY="<%=session("locY")%>"; function showTimer(){ if (rsX-sessionX>=i){ document.getElementById('move_pic').style.left=sessionX+i; i+=2; } if (rsY-sessionY>=i){ document.getElementById('move_pic').style.top=sessionY+i; i+=2; } if (rsX-sessionX<=i*-1){ document.getElementById('move_pic').style.left=sessionX-i; i+=2; } if (rsY-sessionY<=i*-1){ document.getElementById('move_pic').style.top=sessionY-i; i+=2; } } 到时候你 requrest 回来的东西 , 中间插个 <input type="hidden" id="rsX" value="xx" /> <input type="hidden" id="rsY" value="xx" /> <input type="hidden" id="sessionX" value="xx" /> <input type="hidden" id="sessionY" value="xx" /> function getContent(objname, cid) { var obj = document.getElementById(objname); if(obj) { obj.innerHTML = httpget("chk.asp", "GET", ""); rsX=document.getElementById("rsX").value; rsY=document.getElementById("rsY").value; sessionX=document.getElementById("sessionX").value; sessionY=document.getElementById("sessionY").value; } } //类似这样的处理流程 , 至於 rsX跟rsY sessionX sessionY , //这些value要怎麽填, 自己再想想看. XD //其实异动不大的状况下用json做回传 , 应该是蛮理想的 , //有兴趣再自己去看看相关的文吧... 坦白讲 , 我觉得要写到这样 , 那都不如我来帮你写程式了, 我自己来写code几分钟内就写得完了...打这篇文章要花我几十分钟 , 所以这类型的文章才会说很难解释 , 浪费时间嘛... 如果没办法知道自己 request送了什麽、弄不清楚ajax流程中时间轴 , 不能掌握自己回传的response , 不能随时掌握页面dom中元素的状况 , 特别是没办法了解资料来源跟如何取得资料 , 这样就算要教 , 也无从教起啊 ,就好像要教不会乘法的人算面积一样 . -- What do you want to have ? / What do you have? 从书本中,你可以发现我的各种兴趣。 从CD中,你可以了解我所喜欢的偶像明星。 或许从文字你很难以了解一个人,但从物品可以。 My PPolis , My past. http://ppolis.tw/user/Tony --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 74.207.224.18 ※ 编辑: TonyQ 来自: 74.207.224.18 (12/30 11:07)
3F:推 sjrom:呵,教得懂的话就可以让别人省N个钟头了..推佛心教学. 12/30 13:36
4F:推 cassatte:我猜原PO看不懂 12/30 22:09
5F:→ TonyQ:不至於吧 , 都说觉得不难了... 12/30 22:55







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灯, 水草

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

TOP