Javascript 如何将listbox的值存储到数组中,然后使用它将数据显示到另一个php页面中

Javascript 如何将listbox的值存储到数组中,然后使用它将数据显示到另一个php页面中,javascript,php,arrays,list,select,Javascript,Php,Arrays,List,Select,我需要关于如何存储列表框中插入的数据的帮助。现在,我有以下代码创建列表 <select name = "lstTerminals" size = "5" id="lstTerminals" multiple="multiple" style="width:200px;"> </select> 一旦列表框中充满了文本,我应该能够单独获取这些文本,并移动到另一个页面以某种方式显示每个文本。我现在的问题是如何在列表框中存储所有这些值(无需选择),并将

我需要关于如何存储列表框中插入的数据的帮助。现在,我有以下代码创建列表

    <select name = "lstTerminals" size = "5" id="lstTerminals" multiple="multiple" style="width:200px;">    

    </select>

一旦列表框中充满了文本,我应该能够单独获取这些文本,并移动到另一个页面以某种方式显示每个文本。我现在的问题是如何在列表框中存储所有这些值(无需选择),并将其存储到数组中。完成后,我如何调用该数组并将其用于另一个页面以显示上一页的值?

您可以创建一个全局变量并将数据保存在addTerminal函数中 然后可以将其发布到php或存储在客户端本地存储中 取决于浏览器是否支持本地存储

var selectedTerminals = [];

function addTerminal() {
    var terminal = document.getElementById('txtTerminal');
    var terminals = document.getElementById('lstTerminals');
    var values = new Array();
    var option = document.createElement("option");

    option.value = terminal.value;
    option.text = terminal.value;

    terminals.add(option);
    savedData = {'value':terminal.value,'text':terminal.text};

    selectedTerminals.push(savedData);
    return true;
}

当您转到事件中的第二页时,您应该有一些事件,您必须调用一些js函数来决定数据存储在何处localStorage或PHP会话:

function saveBeforeNavigation(){

 if (typeof (Storage) !== 'undefined') {
    // use local storage and save selected terminals in it

  localStorage.setItem('selectedTerminals', JSON.stringify(selectedTerminals));

 } else {
    // post the data to the server and store it to DB / session / file
    $.post('secondPage.php', {'selectedTerminals': selectedTerminals},function(result){if(result.status){alert('saved in session')}else{alert('was not saved in session')}},'json');
 }
}
secondPage.php

<?php
session_start();
// saving posted selectedTerminals
if (isset($_POST['selectedTerminals'])) {
  $_SESSION['selectedTerminals'] = $_POST['selectedTerminals'];
  echo json_encode(array('status' => 1));
  die();
}

// when not posted here you get the selectedTerminal when nav executed
if (isset($_SESSION['selectedTerminals'])) {
  echo '<script type="text/javascript">var selectedTerminals = JSON.parse(\'' . json_encode($_SESSION['selectedTerminals']) . '\')</script>';
}
?>

<script type="text/javascript">
// get the selectedTerminals from the localStorage in case its exists
if(typeof(Storage) !== 'undefined'){
    selectedTerminals = JSON.parse(localStorage.getItem('selectedTerminals'))
}

</script>

//从本地存储中获取所选的终端(如果存在)
if(类型(存储)!=‘未定义’){
selectedTerminals=JSON.parse(localStorage.getItem('selectedTerminals'))
}

谢谢您的回答talsibony,我想知道本地存储保存的代码和上面的if语句应该放在addTerminal函数内部还是外部?如果我错了,请纠正我的错误,但是我是否应该使用本地存储导出代码到另一个页面,在那里我可以显示它的所有数据,或者它将在一个页面中,即您刚才给我的代码中?您应该在进入第二个页面之前使用if语句,在第二个页面中,您将从本地存储中提取信息,如果它是可用的,让我修改答案,这样它会更清楚这段代码没有经过测试,我假设它会工作,但整个要点是简单的逻辑希望你得到它clearcool,我感谢它,谢谢!我现在要试试这个,但我想我一看就明白了
var selectedTerminals = [];

function addTerminal() {
    var terminal = document.getElementById('txtTerminal');
    var terminals = document.getElementById('lstTerminals');
    var values = new Array();
    var option = document.createElement("option");

    option.value = terminal.value;
    option.text = terminal.value;

    terminals.add(option);
    savedData = {'value':terminal.value,'text':terminal.text};

    selectedTerminals.push(savedData);
    return true;
}
function saveBeforeNavigation(){

 if (typeof (Storage) !== 'undefined') {
    // use local storage and save selected terminals in it

  localStorage.setItem('selectedTerminals', JSON.stringify(selectedTerminals));

 } else {
    // post the data to the server and store it to DB / session / file
    $.post('secondPage.php', {'selectedTerminals': selectedTerminals},function(result){if(result.status){alert('saved in session')}else{alert('was not saved in session')}},'json');
 }
}
<?php
session_start();
// saving posted selectedTerminals
if (isset($_POST['selectedTerminals'])) {
  $_SESSION['selectedTerminals'] = $_POST['selectedTerminals'];
  echo json_encode(array('status' => 1));
  die();
}

// when not posted here you get the selectedTerminal when nav executed
if (isset($_SESSION['selectedTerminals'])) {
  echo '<script type="text/javascript">var selectedTerminals = JSON.parse(\'' . json_encode($_SESSION['selectedTerminals']) . '\')</script>';
}
?>

<script type="text/javascript">
// get the selectedTerminals from the localStorage in case its exists
if(typeof(Storage) !== 'undefined'){
    selectedTerminals = JSON.parse(localStorage.getItem('selectedTerminals'))
}

</script>