Как передать значение переменной PHP в функцию jquery? - PullRequest
3 голосов
/ 30 сентября 2011

У меня есть этот JQuery Script в папке Wordpress / js, и мне нужно изменить некоторые значения, которые я храню в базе данных.

$( "#slider-range2" ).slider({
    range: true,
    min: 18,
    max: 90,
    values: [ 35, 50 ],
    slide: function( event, ui ) {
        $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
    }
});
$( "#amount2" ).val( $( "#slider-range2" ).slider( "values", 0 ) + "-" + $( "#slider-range2" ).slider( "values", 1 ) );

Документация Jquery мне не понятна.Значения, которые мне нужно изменить, это [35, 50].Эти значения хранятся в базе данных.Как я могу сделать это из файла JS?Как я могу передать значение переменной PHP в функцию jquery?

Спасибо.

Ответы [ 7 ]

5 голосов
/ 30 сентября 2011

Предполагая, что вы хотите сохранить внешний файл js, а не встраивать его в скрипт php, попросите php записать два глобальных файла js и измените файл js, чтобы использовать их вместо этого.

например. в php:

echo "<script>var val1 = $var1; var val2 = $var2;</script>";

и в вашем файле js:

values: [val1, val2]


Но если вместо этого вы можете изменить свой js-файл на php-файл, вы можете сделать что-то вроде:
<?php header('Content-type: text/javascript'); ?>
... // your regular js code  here
values: <?php echo $var1 ?> , <?php echo $var2 ?>
...

Теперь вы можете использовать на своей странице:

<script type="text/javascript" src="yourfile.js.php">
4 голосов
/ 30 сентября 2011

PHP-код выполняется на сервере, а jQuery-код выполняется в браузере, поэтому вы не можете напрямую передавать переменные PHP в функции jQuery, поскольку вы не можете напрямую вызывать функции jQuery из кода PHP. *

Что вам нужно сделать, это заставить код PHP генерировать код JavaScript, который при последующем запуске в браузере установит для некоторых переменных JavaScript значения, которые вы хотите. Например, вы можете заставить код PHP генерировать элемент <script> в заголовке страницы, который содержит операторы назначения JavaScript, а затем изменить файл .js так, чтобы вместо чисел 35 и 50 он ссылался на эти переменные.

Вы также можете поместить код PHP в сам файл .js, как предлагали другие ответы, но только в том случае, если это на самом деле сценарий PHP, а не статический файл. Я бы рекомендовал хранить большую часть кода JavaScript в статических файлах (чтобы браузеры могли их кэшировать), и чтобы PHP просто генерировал назначения для нескольких глобальных переменных, на которые могут ссылаться остальные сценарии.

4 голосов
/ 30 сентября 2011

Я бы сказал, что вы просто делаете это так:

$( "#slider-range2" ).slider({
    range: true,
    min: 18,
    max: 90,
    values: [ <?php echo $value1; ?>, <?php echo $value2; ?> ],
    slide: function( event, ui ) {
        $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
  }

});

где, конечно, $ value1 и $ value2 - это значения, которые вы получаете из базы данных.

-edit- или, как сказал другой парень, вы можете использовать цикл php for, чтобы динамически изменить размер вашего массива:)

3 голосов
/ 30 сентября 2011

Ну, вы могли бы сделать ajax-запрос к серверу, прежде чем определить свой ползунок.

например. var myValues ​​= function () { // делаем ajax вызов php скрипта, который возвращает значения возвращаемое значение};

$( "#slider-range2" ).slider({     
   range: true,     
   min: 18,
   max: 90,
   values: myValues(),
   slide: function( event, ui ) {
       $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
   } 
}); 
$( "#amount2" ).val( $( "#slider-range2" ).slider( "values", 0 ) + "-" + $( "#slider-range2" ).slider( "values", 1 ) ); 
2 голосов
/ 30 сентября 2011

Просто повторите это, вот так.

$( "#slider-range2" ).slider({
    range: true,
    min: 18,
    max: 90,
    values: <?php echo $your_variable ?> ,
    slide: function( event, ui ) {
        $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
    }
});
1 голос
/ 30 сентября 2011

Это зависит от стоимости.Если это простое числовое значение, вы можете просто повторить его.Если он сложный или строковый, вы можете отобразить его в формате JSON через json_encode (поскольку JSON является подмножеством буквального синтаксиса JavaScript), так как он будет обрабатывать экранирование и так далее дляyou.

Обратите внимание, что в обоих случаях PHP выполняется на сервере , поскольку запрос страницы удовлетворен, и JavaScript использует его позднее на стороне клиента.

0 голосов
/ 30 сентября 2011

Одним из моих любимых приемов является присвоение имени файлу javascript somename.js.php, а затем отправка заголовка JavaScript:

Header("content-type: application/x-javascript");

Теперь вы можете использовать полную функциональность php (включая db-вызовы) внутри вашего javascript.

Однако вы должны убедиться, что вы правильно кэшируете свой файл на сервере, чтобы он не загружался на каждой странице. Что-то вроде:

header("Expires: Sat, 26 Jul 2012 05:00:00 GMT")

Как правило, я обычно сохраняю любые изменяющиеся переменные JS в основном файле php и передаю их функциям, объявленным во внешнем файле JS.

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