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

請輸入看板名稱,例如:WOW 或 站內搜尋

TOP