Web_Design 板


LINE

最近刚开始试着写网页 之所以用javascript是因为只要<script></script>就可以用了 能够直接用记事本写 囧> 之後也可能会要写同步之类的 -- 关於读档有稍微爬过文 但是http://goo.gl/NmRxu这网站看不是很懂= = 我现在是用http://www.w3schools.com/ajax/default.asp当范例 可以吃到档(xmlhttp.responseText) 但是只限於 xmlhttp.onreadystatechange=function(){} 内 读的档到function外後就不见了 因为我的主要目的是 读两个档 经过排序後进行比较 如果在function外值就不在的话就无法进行比较 请问有什麽其他方法吗? 或是需要换个语言去写? --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.243.253 ※ 编辑: james54333 来自: 140.112.243.253 (11/02 21:12)
1F:推 LaPass:停.... 你跳太快了,你先搞懂JAVASCRIPT的域的概念.... 11/02 21:23
2F:→ LaPass:http://f23.tw/FFGd.html 11/02 21:24
3F:→ LaPass:简单来讲就是把变数宣告在function外面 11/02 21:25
-- 但是我在function内用 var n=xmlhttp.responseText; 或是 n=xmlhttp.responseText; 在function外都无法读取n的值 而如果是在function外先 var n; 的话 n出了function後一样会是空的呀? ※ 编辑: james54333 来自: 140.112.243.253 (11/02 21:39)
4F:→ danny8376:ajax不是指令下了马上就有资料啊... 11/02 22:10
5F:→ james54333:? 楼上这个我知道阿 11/02 22:23
-- 是不是我没讲清楚问题在哪 QQ function loadXMLDoc() { var xmlhttp; xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; --> 有值 } } alert(xmlhttp.responseText); ---------------> 会是空的 xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); } xmlhttp.responseText的值是不是被绑定在 xmlhttp.onreadystatechange=function(){}这个function里面? 在function外 alert(xmlhttp.responseText) 会发现是空的 因为我想要让两笔资料比较 所以想请问有没有方法取出xmlhttp.responseText到 xmlhttp.onreadystatechange=function(){}外面? 如果不行的话是不是有其它做法? ※ 编辑: james54333 来自: 140.112.243.253 (11/02 22:31)
6F:→ danny8376:并没有啊 responseText会在请求成功後一直保留啊 11/02 23:02
7F:→ danny8376:应该是你有地方写错 不过目前的资讯也无法看出问题 11/02 23:04
8F:→ james54333:是喔QQ 我再试试看... 11/02 23:36
9F:→ james54333:如果不用XMLHttpRequest或javascript有推荐的写法吗? 11/02 23:55
10F:→ f1234518456:jquery 11/03 00:08
-- 我刚去翻过jquery了 感觉和javascript差不多... 我是用$.get("test.asp",function(data1){ } 我可以很轻松的取出"test.asp"里面的值 但是一样 在$.get(){}外面我依然不能用data1的值阿 $.get("test.asp",function(data1){ alert(data1); <-- 有值 } alert(data1); <-- 没有值 这样我没办法取出来与第二个data做比较耶 请问我有哪里理解错误吗? 还是jquery有其它用法呢? ※ 编辑: james54333 来自: 140.112.243.253 (11/03 01:23)
11F:→ danny8376:如果function的参数能跑出function 不觉得会大乱吗... 11/03 01:42
12F:→ danny8376:不就说过了 丢到一个外面的变数去 11/03 01:43
13F:→ danny8376:看是要function外定义的 还是function里没用var生出来的 11/03 01:43
-- 这两种方法我都试过了但是都传不出来 我在第一次回的时候就试过了 刚刚使用jquery测一样不行 在function外面先定义的话 就会取function外定义的值(空的也一样) 在function内不用var 生出来的全域变数在function外依然是空的 ※ 编辑: james54333 来自: 140.112.243.253 (11/03 01:56)
14F:推 Fantasywind:你先在 $.get 前面定义变数 var data; 11/03 02:02
15F:→ Fantasywind:response 的 function 里面 -> data = data1 11/03 02:02
16F:→ Fantasywind:下面的就可以取道了 scope 概念请补齐~ 11/03 02:02
-- response 的 function是指 get(){...} 吗? 如果是的话我真的试过很多次了... 输出结果都是undefined var data; $.get("test.asp",function(data1){ data = data1; alert(data); <-- 有值 } alert(data); <-- undefined 我也用document.getElementById("test").innerHTML=data; 测试过 一样undefined ※ 编辑: james54333 来自: 140.112.243.253 (11/03 02:22)
17F:推 Fantasywind:我蠢了 Ajax 是非同步 所以你下面的alert执行的时候 11/03 02:31
18F:→ Fantasywind:function(data1){} 还没执行 因为还在等待伺服器回应 11/03 02:32
19F:→ Fantasywind:如果你要在外面使用请用一个function存在变数 11/03 02:33
20F:→ Fantasywind:然後再从Response里面去call 11/03 02:33
21F:→ Fantasywind:时间的问题在 ajax 应用很重要 11/03 02:34
22F:→ danny8376:看来并没有完全知道ajax是异步XD 不过还真没注意到 11/03 03:23
23F:→ danny8376:话说正常会用console去下指令测才对吧... 11/03 03:23
24F:→ god11415:$.ajax(...).done(function(datal){data=datal;}); 11/03 05:48
25F:→ james54333:"用一个function存在变数" 这句话我不懂耶 11/03 09:54
26F:→ james54333:我是新手我只会用alert... console还没用过 11/03 09:56
27F:→ james54333:god大的方法我试试看 11/03 09:57
-- var n; $.ajax({ type:"GET", url:"test.asp" }).done(function(datal){ n=datal; document.getElementById("myDiv").innerHTML=n; }); document.getElementById("test").innerHTML=n; 可是上面这一行还是会因为异步的关系而没办法直接拿值 有没有方法让他先等.done做完再拿值啊? .ajax().done()的用法在w3school上没讲得很清楚 我也不知道我这样子用对不对... 很抱歉我真的不知道要怎麽做出两个档案做比较这种效果 QQ ※ 编辑: james54333 来自: 140.112.243.253 (11/03 10:56)
28F:→ danny8376:测试时多个按钮可能太难了 11/03 15:48
29F:→ danny8376:http://jsfiddle.net/danny8376/JRC8t/5/ 11/03 15:48
30F:→ danny8376:http://jsfiddle.net/danny8376/JRC8t/4/ <= native 11/03 15:49
31F:→ danny8376:如果要连续取两个档案来比较 11/03 15:54
32F:→ danny8376:http://jsfiddle.net/danny8376/JRC8t/8/ 11/03 15:54
33F:→ james54333:谢谢danny >< 我会再试试看 11/03 16:14
※ 编辑: james54333 来自: 140.112.243.253 (11/03 16:55)
34F:→ tooto1985:async: false (正解) 11/05 09:01
35F:推 jenesis:去了解一下callback是啥吧~ 11/11 23:44







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