[問題] 新手想用javascript讀檔
最近剛開始試著寫網頁
之所以用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)
推
11/02 21:23, , 1F
11/02 21:23, 1F
→
11/02 21:24, , 2F
11/02 21:24, 2F
→
11/02 21:25, , 3F
11/02 21:25, 3F
--
但是我在function內用 var n=xmlhttp.responseText;
或是 n=xmlhttp.responseText;
在function外都無法讀取n的值
而如果是在function外先 var n; 的話
n出了function後一樣會是空的呀?
※ 編輯: james54333 來自: 140.112.243.253 (11/02 21:39)
→
11/02 22:10, , 4F
11/02 22:10, 4F
→
11/02 22:23, , 5F
11/02 22:23, 5F
--
是不是我沒講清楚問題在哪 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)
→
11/02 23:02, , 6F
11/02 23:02, 6F
→
11/02 23:04, , 7F
11/02 23:04, 7F
→
11/02 23:36, , 8F
11/02 23:36, 8F
→
11/02 23:55, , 9F
11/02 23:55, 9F
→
11/03 00:08, , 10F
11/03 00:08, 10F
--
我剛去翻過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)
→
11/03 01:42, , 11F
11/03 01:42, 11F
→
11/03 01:43, , 12F
11/03 01:43, 12F
→
11/03 01:43, , 13F
11/03 01:43, 13F
--
這兩種方法我都試過了但是都傳不出來
我在第一次回的時候就試過了 剛剛使用jquery測一樣不行
在function外面先定義的話 就會取function外定義的值(空的也一樣)
在function內不用var 生出來的全域變數在function外依然是空的
※ 編輯: james54333 來自: 140.112.243.253 (11/03 01:56)
推
11/03 02:02, , 14F
11/03 02:02, 14F
→
11/03 02:02, , 15F
11/03 02:02, 15F
→
11/03 02:02, , 16F
11/03 02:02, 16F
--
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)
推
11/03 02:31, , 17F
11/03 02:31, 17F
→
11/03 02:32, , 18F
11/03 02:32, 18F
→
11/03 02:33, , 19F
11/03 02:33, 19F
→
11/03 02:33, , 20F
11/03 02:33, 20F
→
11/03 02:34, , 21F
11/03 02:34, 21F
→
11/03 03:23, , 22F
11/03 03:23, 22F
→
11/03 03:23, , 23F
11/03 03:23, 23F
→
11/03 05:48, , 24F
11/03 05:48, 24F
→
11/03 09:54, , 25F
11/03 09:54, 25F
→
11/03 09:56, , 26F
11/03 09:56, 26F
→
11/03 09:57, , 27F
11/03 09:57, 27F
--
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)
→
11/03 15:48, , 28F
11/03 15:48, 28F
→
11/03 15:48, , 29F
11/03 15:48, 29F
→
11/03 15:49, , 30F
11/03 15:49, 30F
→
11/03 15:54, , 31F
11/03 15:54, 31F
→
11/03 15:54, , 32F
11/03 15:54, 32F
→
11/03 16:14, , 33F
11/03 16:14, 33F
※ 編輯: james54333 來自: 140.112.243.253 (11/03 16:55)
→
11/05 09:01, , 34F
11/05 09:01, 34F
推
11/11 23:44, , 35F
11/11 23:44, 35F