2014-03-29 7 views
2

PHP 파일페이지를 새로 고침하는 동안 자바 스크립트 배열을 유지하는 방법은 무엇입니까?

<input type="text" id="txtMyText"> 
<button type="button" id="myButton" onclick="addItemToArray()">Add to Array</button> 

자바 스크립트 내가 텍스트 필드에 어떤 값을 입력하고 버튼을 누르 때마다

var myArray = [] 

function addItemToArray() 
{ 
    myArray.push(document.getElementById("txtMyText").value); 
} 

파일은, 값이 배열에 저장됩니다. 페이지가 새로 고쳐지면 배열이 비게됩니다. 수동으로 제거하기 전까지는 요소를 유지하려고합니다. 어떻게 보관합니까? PHP 세션이나 숨겨진 필드에 배열을 넣어야합니까? 그렇다면 어떻게?

var items = JSON.parse(sessionStorage.getItem("items")); 
+2

스토어 좋아하는 저장 배열 뭔가를 구문 분석 할 수 있습니다. – ceejayoz

답변

2

사용 localStorage API를 사용 setItem() 방법은 localStorage에 저장이되기 전에 배열을 stringfy 않습니다. 사용 getItem() 저장 항목을 thosed과 쿠키에

if(localStorage.getItem('textValues') == null){ 
    var myArray =[]; 
}else{ 
    myArray = JSON.parse(localStorage.getItem('textValues')); 
    //-----------^parse the item by getting---^--stored item 
} 

function addItemToArray(){ 
    myArray.push(document.getElementById("txtMyText").value); 
    localStorage.setItem('textValues', JSON.stringify(myArray)); 
    //------------^store the item by stringify--^ 
} 

DEMO

+0

네, 저를 위해 일하고 있습니다. –

+0

이제 어떻게 다른 페이지에서이 정보를 사용해야하므로 PHP 세션에서이 자바 스크립트 배열을 저장할 수 있습니까? –

+0

저장된 항목을 위의 코드에서 정의한 것과 같은 방법으로 다른 페이지에 저장할 수 있습니다. –

2

로컬 저장소에 저장해야합니다. localStorage.setItem("storageName", myArray)는이 localStorage.getItem("storageName") 또는 아마

+0

오직 누락 된 것은 초기 값에 대한 캐치입니다. –

+0

@Joe Frambach - 저는 초기화와 sessionStorage의 null 값 확인도 찾고있었습니다. –

1

var myArray = localStorage.getItem("storageName") 가장 쉬운 방법은 jQuery를 쿠키를 사용하는 것입니다 검색 할

당신이 PHP 세션을 사용하려면, 내가 활용할 것

if ($.cookie('arrayItems')){ 
     myArray=JSON.parse($.cookie('arrayItems')); 
} 


function addItemToArray() 
{ 
    myArray.push(document.getElementById("txtMyText").value); 
    $.cookie('arrayItems',JSON.stringify(myArray)); 
} 
+1

jQuery가 사용되었다는 표시가 없습니다. jQuery를 모두 추가하여 쿠키를 조정하는 것은 비효율적입니다. http://www.doxdesk.com/img/updates/20091116-so-large.gif – ceejayoz

+0

@ceejayoz - jQuery를 사용하고 있습니다. –

+0

@andrew - $ .cookie가 저를 위해 작동하지 않습니다. –

1

편집 var myArray = []/편집 AJAX. 배열을 만들 때 배열을 처리 할 파일을 만들어야합니다. 다음은 간단한 예입니다.

첫 페이지

<?php 
    //start the PHP session to save your array in 
    session_start(); 
?> 

<script type="text/javascript"> 
var myArray = []; 
<?php 
    if(isset($_SESSION['myArray'])) { 
     foreach($_SESSION['myArray'] as $item){ 
      // prepopulate the session array from PHP 
      echo "myArray[] = ".$item.";"; 
     } 
    } 
?> 
function addItemToArray(){ 
    var addvalue = document.getElementById("txtMyText").value; 
    myArray.push(addvalue); 
    if (window.XMLHttpRequest){ var xmlhttp=new XMLHttpRequest(); }else { var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } 
    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("myDiv").innerHTML += xmlhttp.responseText .", "; 
     } 
    } 
    xmlhttp.open("GET","save_array.php?newValue="+,true); 
    xmlhttp.send(); 
} 
</script> 

<div id="show_my_array"> 
    <?php 
     //show array saved from last time 
     if(isset($_SESSION['myArray'])) { 
      foreach($_SESSION['myArray'] as $item){ 
       // prepopulate the session array from PHP 
       echo $item.", "; 
      } 
     } 
    ?> 
</div> 
<input type="text" id="txtMyText"> 
<button type="button" id="myButton" onclick="addItemToArray()">Add to Array</button> 

save_array.php이 목적을 위해

<?php 
session_start(); 
if(!isset($_SESSION['myArray'])){ 
    $_SESSION['myArray'] = array(); 
} 
$_SESSION['myarray'][] = $_GET['newValue']; 
echo $_GET['newValue']; 
?> 
관련 문제