2012-08-24 6 views
0

아약스를 사용하여 배열에 파일을로드 한 다음 파일을 다시 분할하여 저장해야합니다.이 작업은 버튼 하나에서 발생합니다.파일에 자바 스크립트 배열을 작성하십시오

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(' '); 
     }  
    } 
} 

난 자바 스크립트는 서버 측 아니라는 것을 이해하고 내가 원하는 것을 할 수없는 이유입니다,하지만 난 아마? alreadyexistingtags은 [] tagsupdated.txt.Any에 도움을 작성하는 방법이있을거야 내가 어떻게 든 배열을 PHP로 전달해야합니까? 그렇다면 버튼을 누를 때까지 기다릴 필요가있을 때 PHP가 페이지가로드 될 때 실행된다는 것을 고려하면 어떻게 가능합니까?

+2

질문 태그 ... AJAX. 원하는 모든 것을 PHP 스크립트에 전달하고 PHP 스크립트가 tagsupdated.txt에 기록하도록합니다. – Travesty3

+0

확장하려면 PHP를 먼저 ping하고 PHP를 작성하여 – Sammaye

답변

3

서버로 다시 데이터를 보내려면 AJAX 또는 다른 방법을 사용해야하며 그러면 파일을 쓸 수 있습니다.

이렇게하려면 스크립트를 서버에 만듭니다. 예를 들어 writearray.php는 자바 스크립트 배열을 입력으로 허용합니다. 그런 다음 AJAX를 사용하여 배열에 해당 파일에 대한 요청을 보냅니다.

PHP 파일은 지금과 같은 (이것이다 매우 간단한 예) 보일 것이다 : 당신은 그냥 공백으로 구분 된 목록으로 자바 스크립트 배열을 저장하는 것처럼

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

그것은 외모 때문에 자바 스크립트가 보일 것이다 이 같은 :

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); 

이 작동하는 방법, 당신이 당신의 자바 스크립트 배열의 텍스트 표현을 보유하고 필드라는 이름의 배열과 POST를 보내는 것입니다. PHP 코드는 $ _POST [ 'array']를 검사하여이 값을 얻은 다음 파일에 씁니다.

더 복잡한 작업을 원할 경우 JSON을 사용해야합니다. 또한 사용자 데이터로하는 일에 항상 신중해야합니다. 송신 데이터에 대한

+2

을 작성하십시오. 부록 : 웹 사이트에 악의적 인 콘텐츠를 심기 위해 악용 될 수있는 기능을 구현할 때 보안을 * 매우 * 알고 있어야합니다. – Leonard

+0

내가 무엇을 도와 드릴까요? 위에서 설명한 Stas Telnov와 같은 것을해야합니다 : 'r3.open ('POST', 'myPHP.php', true); ... r3.send (data_string); ' 이게 무슨 뜻입니까? 만약 그렇다면 PHP 파일에서 배열이 어디에 저장 될까요? 나는'$ variable = "MYString"; fwrite ($ fh, $ variable);'배열을 $ variable에 전달하려면 어떻게해야합니까? – yiannis

+0

@yiannis 몇 가지 샘플 코드를 포함하여 제 답변에 더 많은 것을 추가했습니다. 잘하면 그것은 올바른 방향으로 당신을 가리 킵니다. – Telgin

0

는 다른 아약스 쿼리를 수행해야하지만 .send 방법에 당신은 데이터의 문자열을 예 통과해야 : 변수 alreadyexistingtags 전송하기 전에

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); 

것은 당신이 분리 이상으로 문자열 배열을 내파해야합니다 JSON 문자열. 그러나 writeTextWithoutTags.php에서 ypu는 javascript가 ib user brouser를 실행하기 때문에 데이터를 검사해야하며 침입자가 처리하지 않은 yavastsript로부터 데이터가 전송되었는지 확인할 수 없습니다!

P. PHP에 접근 할 수 없다면 나는 왜 여기에 있는지 이해할 수 없다. JS - PHP로 돌아가서 서버에서 브라우저로 데이터를 보내지 않고 수행 할 수있는 모든 액션들.

관련 문제