2012-08-24 61 views
0

我已經使用ajax將文件加載到數組中,並且在拆分之後,我需要將它保存到文件中。這一切都發生在按鈕的按鈕上。將javascript數組寫入文件

function updatetags(){ 

var alreadyexistingtags; 
var responsetext; 

var r2 = new XMLHttpRequest(); 
r2.open('GET', 'tagsupdated.txt', true); 
r2.send(null); 

r2.onreadystatechange = function() { 
    if (r2.readyState == 4 && r2.status==200) { 

     responsetext=r2.responseText; 

     alreadyexistingtags=responsetext.split(' '); 
     }  
    } 
} 

據我所知,JavaScript的不是服務器端,這就是爲什麼我不能做我想做什麼,但我敢肯定,必須有寫alreadyexistingtags []以tagsupdated.txt.Any幫助的方式嗎?也許我應該以某種方式將數組傳遞給PHP?如果是這樣的話,PHP在頁面加載時執行的情況下可能會如何執行?當我需要等待按鈕被按下時?

+2

你的答案就在你的問題標籤... AJAX。將所需的任何內容傳遞給PHP腳本,並將PHP腳本寫出到tagsupdated.txt。 – Travesty3

+0

要擴展它將是最好的先ping的PHP,然後讓PHP寫出來 – Sammaye

回答

3

您將不得不使用AJAX或其他方法將數據發送回服務器,然後可以將該文件寫出。

要做到這一點,只需在您的服務器上創建一個新的腳本,比如writearray.php,它接受Javascript數組作爲輸入。然後使用AJAX向您的數組發送一個請求到該文件。

的PHP文件看起來像這樣(這是一個高度簡化的例子):

<?php 
file_put_contents("where_you_want_the_file.txt", $_POST['array']); 
?> 

看起來你只是存儲您的Javascript數組作爲一個空格分隔列表,這樣的JavaScript看起來是這樣的:

var str = your_array.join('%20'); // URL encoded spaces separating array entries 
var params = "array=" + str; 
var http = new XMLHttpRequest(); 
http.open("POST", "your_script.php", true); 

//Send the proper header information along with the request 
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
http.setRequestHeader("Content-length", params.length); 
http.setRequestHeader("Connection", "close"); 

http.onreadystatechange = function() { 
    if(http.readyState == 4 && http.status == 200) { 
     // Do something on success? 
    } 
} 
http.send(params); 

這種工作方式,是你發送一個字段中指定數組,握着你的Javascript數組的文本表示一個POST。 PHP代碼檢查$ _POST ['array']以獲取此值,然後將其寫入您的文件。

請注意,如果你想做更復雜的事情,你應該看看使用JSON。並且還一如既往地謹慎對待用戶數據。

+2

附錄:請記住,*非常*安全性意識到實現這樣的功能,因爲它可能會被利用來在您的網站上植入惡意內容。 – Leonard

+0

從我不喜歡的東西,我應該做一些像上面描述的Stas Telnov: 'r3.open('POST','myPHP.php',true);如果是這樣,在PHP文件將數組存儲在哪裏?我的意思是我會在哪裏寫'$變量=「MYString」; fwrite($ fh,$ variable);'我應該寫什麼來將我的數組傳遞給$變量? – yiannis

+0

@yiannis我在答案中增加了很多,包括一些示例代碼。希望這會指向你正確的方向。 – Telgin

0

對於發送數據,必須做的是另AJAX的查詢,但在方法。發送你必須通過與數據的字符串 例如:

var r3 = new XMLHttpRequest(); 
r3.open('POST', 'writeTextWithoutTags.php', true); 
var data_string='text='+alreadyexistingtags+'&etcParams='+etc_you_params; 
r3.onreadystatechange = function() 
{ 
    if (r3.readyState == 4 && r3.status==200) 
    { 
    alert(r3.responseText);//write result 
    }  
} 
r3.send(data_string); 

之前發送alreadyexistingtags變量必須破滅數組字符串分離器或更好到JSON字符串。 但是在writeTextWithoutTags.php中,ypu必須檢查數據,因爲javascript執行ib user brouser,並且您無法確定數據是否未經過處理入侵者的yavastsript發送!

P.S.如果你可以訪問PHP我不會理解,我不明白你爲什麼在這裏JS - 所有這些操作,你可以在PHP中支持,而不是驅動數據從服務器到瀏覽器,並返回