Передача переменной jquery в php - PullRequest
2 голосов
/ 14 февраля 2011

У меня есть следующий код jquery:

  while (count < 31) {
  window['cday_' + count] = <?php echo $day_1 ?>; 
  window['tday_' + count] = (window['cday_' + count] * formfig) / formfig2; 
  count++;
  }

Но мне нужно $ day_1 в выражении php echo для отражения переменной "count", поэтому в теории это должно быть что-то вроде "echo $ day_count",Можно ли передать переменную в php?


php & jquery:

$i=0;
while ($i < $num) {
${"day_$i"}=mysql_result($result,$i,"datavalue");
$i++;
}

?>

<script type="text/javascript">
var chart1; 
var count=1;
var formfig=17;
var formfig2=2;

function chartdraw(){

      while (count < 31) {
      window['cday_' + count] = <?php echo $day_1 ?>; 
      window['tday_' + count] = (window['cday_' + count] * formfig) / formfig2; 
      count++;
      }

Ответы [ 4 ]

3 голосов
/ 14 февраля 2011

Краткий ответ здесь - нет.

Чтобы понять, что возможно, вам нужно глубокое понимание того, что происходит. Ваш код PHP создает документ HTML (со встроенным JavaScript) и отправляет его в веб-браузер. Как только веб-браузер (который, конечно, работает на компьютере пользователя, а не на вашем сервере) отображает эту страницу, он выполняет javascript. Это когда переменные javascript начинают фактически означать что-то. До этого они просто отправляют текст по сети. Этот момент наступает еще долго после того, как код PHP завершится. Ваш сервер уже закрыл этот экземпляр php, так как отправил код пользователю.

Имея это в виду, вы можете отправить значение переменной javascript (или любого другого числа) обратно на ваш сервер с помощью запроса ajax. По сути, это отправит некоторую информацию (значение переменной и название нужной вам страницы) обратно на ваш сервер, что, в свою очередь, заставит ваш сервер создать новую веб-страницу, которая может иметь PHP код в нем. Содержимое этой веб-страницы будет возвращено к другому фрагменту javascript, который вы можете предоставить - называемому «обратным вызовом» - который может взять страницу, созданную вторым сценарием php, и использовать ее. Это, конечно, довольно ресурсоемкий.

Если вы не планируете делать то, что может делать ТОЛЬКО PHP, я бы порекомендовал найти способ сделать как можно больше вашей логики в javascript. Это облегчает все эти сложные проблемы и сохраняет всю тяжелую работу на компьютере пользователя.

Если вы можете структурировать свой код так, чтобы ваш php-код предоставлял все данные, которые необходимы javascript-коду до того, как php завершит работу, вы можете уйти, ничего не делая с ajax. Вот пример:

<script type="text/javascript">
  var days = {};
  <? for($day = 0; $day < 30; $day++) { ?>
    days.<? echo $day ?> = "<? echo get_day_info($day) ?>";
  <? } ?>
</script>

Что это будет делать, это создать объект javascript с именем days. Затем он заполнит days.i для i от 0 до 30. Предполагается, что у вас есть функция get_day_info ($ day), которая берет день и возвращает информацию за этот день. Здесь я предполагаю, что вы имеете дело со строками - если нет, вам нужно будет удалить кавычки и, возможно, сделать другие вещи, чтобы обернуть данные в зависимости от того, какой формат они принимают.

2 голосов
/ 14 февраля 2011

Я верю, что единственный способ - использовать ajax.http://api.jquery.com/jQuery.ajax/

1 голос
/ 14 февраля 2011

Не без существенного изменения вашего подхода.

Проблема в том, что PHP полностью существует на вашем сервере, где в браузере существует javascript.PHP действительно действительно знает что-нибудь о JavaScript.PHP полностью отобразит вашу страницу, прежде чем какой-либо javascript будет запущен.Таким образом, невозможно легко вернуть это значение.

Вы можете использовать ajax для запуска javascript, который может загружать данные или использовать URL-адреса на вашем сервере, но вы не можете просто заменить переменные javascript в PHP.Причина, по которой вы можете сделать это с помощью переменных PHP, заключается в том, что PHP фактически генерирует JavaScript.

0 голосов
/ 14 февраля 2011

Должен ли javascript сохранить значение в скрытом поле и таким образом получить значение с помощью PHP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...