2012-04-27 3 views
1

Хотя новичок в javascript, мне нужно взять переменную javascript (массив), отражающую то, что пользователь сделал на стороне клиента, и отправить его на страницу сервера PHP на submit.PHP/Javascript post js variable to php page

Было предложено включить это как значение в скрытое поле в форме для публикации на php-страницу. Однако, поскольку переменная JS динамически создается пользователем, я не могу писать на страницу для включения в форму, если я не вызываю функцию, которая обновляет страницу. Чтобы избежать обновления с двумя страницами, я бы предпочел, чтобы функция отправки одновременно захватила данные и одновременно отправила их в скрипт php. AJAX, если я правильно понимаю, не нужно, потому что я нормально перезагружаю страницу один раз на submit. Я просто не хочу перезагружать дважды.

Следующая функция, предложенная Андреем для установки переменной js и сообщения. Th сообщения формы, поскольку я получаю другую скрытую переменную в форме, но я не получаю переменную, заданную js, возможно, потому, что есть ошибка с именами переменных.

<html> 
    <head> 
    <style type="text/css"> 
     select 
     { 
      width:100px; 
     } 
    </style> 
    <script type="text/Javascript"> 
     function moveToRightOrLeft(side) 
     { 
      if (side == 1) 
      { 
       var list1 = document.getElementById('selectLeft'); 
       var list2 = document.getElementById('selectRight'); 
      } 
      else 
      { 
       var list1 = document.getElementById('selectRight'); 
       var list2 = document.getElementById('selectLeft'); 
      } 

      if (list1.options.length == 0) 
      { 
       alert('The list is empty'); 
       return false; 
      } 
      else 
      { 
       var selectedItem = list1.options[list1.selectedIndex]; 
       move(list2, selectedItem.value, selectedItem.text); 
       list1.remove(list1.selectedIndex); 
       if (list1.options.length > 0) 
        list1.options[0].selected = true; 
      } 
      return true; 
     } 

     function move(listBoxTo, optionValue, optionDisplayText) 
     { 
      var newOption = document.createElement("option"); 
      newOption.value = optionValue; 
      newOption.text = optionDisplayText; 
      listBoxTo.add(newOption, null); 
      return true; 
     } 

     function postData(listBoxID) 
     { 
      var options = document.getElementById(listBoxID).options; 
      for (var i = 0; i < options.length; i++) 
      window.location = "posttoserver.php?data="+options[i].value; 

     } 

     function setTheValue(val) { 
    var options = document.getElementById(listBoxID).options; 
    var form = document.forms['myForm']; 
    hiddenField = oFormObject.elements["data"]; 
    hiddenField.value = "val"; 
} 
    </script> 
    </head> 
    <body> 
    <select id="selectLeft" multiple="multiple"> 
     <option value="1">Value 1</option> 
     <option value="2">Value 2</option> 
     <option value="3">Value 3</option> 
    </select> 
    <button onclick="moveToRightOrLeft(2)">&lt;</button> 
    <button onclick="moveToRightOrLeft(1)">&gt;</button> 
    <select id="selectRight" multiple="multiple"> 
    </select> 
    <form id="myForm" action="getdata.php" method="get"> 
    <input type="hidden" name="data" /> 
    <input type="hidden" name="mode" value="savedit"> 
    <button onclick="setTheValue(options)">Submit Data</button> 
</form> 
    </body> 
    </html> 

На другом конце я имею в getdata.php:

<?php 
$mode = $_REQUEST['mode']; 
$option = $_REQUEST['data']; 
echo $mode; 
echo $option; 
print_r ($option);; 
?> 
+0

Вам не нужно обновлять страницу, чтобы изменить значение скрытого поля. – Andrew

+0

Согласовано ... JS поместит ваше значение в это поле формы, после чего вы разместите форму. – GDP

+0

Если переменная js называется var, каков будет синтаксис html? Что-то вроде?

0

Вы можете пойти дальше и создать форму, как вы это обычно с пустым скрытым полем:

<form id="myForm" action="posttoserver.php" method="get"> 
    <input type="hidden" name="data" /> 
    ... 
    <input type="submit" value="Submit" /> 
</form> 

И вы можете использовать функцию JavaScript для установки значения скрытого поля:

function setTheValue(val) { 
    var form = document.forms['myForm']; 
    hiddenField = oFormObject.elements["data"]; 
    hiddenField.value = "val"; 
} 

Вы можете вызвать функцию setTheValue (val), когда ваша кнопка нажата или что-то еще. Надеюсь, это поможет!

+0

Тупой вопрос, но каков синтаксис для вызова функции? что-то вроде или я должен использовать user1260310

+0

Вы можете используйте ' ' – Andrew

+0

Это работало для вас? – Andrew

0

jQuery на самом деле делает это очень простым. У вас есть правильная идея, но использование window.location изменит вашу страницу. То, что вы хотите сделать, это сделать запрос асинхронного запроса на другой URL-адрес, пока вы остаетесь на текущей странице.

http://api.jquery.com/jQuery.ajax/

+0

Я бы второй jQuery. Это облегчает жизнь, когда вы работаете с JavaScript. – Andrew