У меня есть этот файл PHP, в котором мне нужна доступная переменная javascript (внутри того же файла) для передачи моей переменной PHP, что-то вроде этого.

myfile.php содержит:

    var testing  = ["EWMLMc3ES3I", "RSdKmX2BH7o", "SIXwlxhjaKY", "acp8TbBPVos", "6GpKR4-TLoI", "XLKLkTnKRwg", "6WPELkw5kD0"];

И я хочу сделать это так

 testing = <?php $new_testing ?>

Мне нужно предложение, может быть, фрагмент jquery, но с чем-то вроде моего сценария, который представляет собой javascript в файле php.


Edit: дополнительная информация, причина этого в том, что есть еще один javascript-код (не в том же файле, а включенный через внешний JS), который нуждается в конкретной переменной PHP. так сказать вот такая логика

  1. javascript_variable ---> php_variable (передавая переменную javascript в php) затем,
  2. php_variable -> another_javascript_variable (передать php в другой файл javascript)
  3. переменная another_javascript_variable будет выполняться этим внешним файлом javascript
0
Mark Bean 31 Янв 2013 в 23:18

4 ответа

Лучший ответ

Со своей стороны PHP используйте json_encode (), чтобы преобразовать массив php в подходящий формат для передачи его в JavaScript.

Php:

$var = array( 'lorem', 'ipsum', 'dolor');
$json_var = json_encode($var);
$parameter = array( 'js_var' => $json_var );
wp_enqueue_script('my_script');
wp_localize_script('my_script', 'object_name', $parameter); 

Javascript :

<script>
my_var = jQuery.parseJSON(object_name.js_var);
alert(my_var); 
</script>
0
RRikesh 1 Фев 2013 в 10:40

Насколько я понимаю ваш вопрос, я считаю, что вы ищете функцию php json_encode

Тогда вы можете делать то, что пытаетесь.

<?php $new_testing = array('one', 'two', 'three', 'four'); ?>

<script>
    var testing = <?php echo json_encode($new_testing); ?>;
</script>

Если вы спрашиваете «Как мой JavaScript может передать переменную в мой PHP», ответ будет AJAX - вы должны сделать совершенно новый запрос.

0
sejordan 31 Янв 2013 в 19:27

Это только один путь для «события загрузки страницы». Другими словами, JavaScript (код на стороне клиента) всегда отображает ПОСЛЕ PHP (код на стороне сервера).

Обходной путь также заключается в использовании загрузки AJAX POST, когда клиентская сторона завершила рендеринг и возвращает ответ обратно на сервер. (Ваш массив)

1
Dan Kanze 31 Янв 2013 в 19:21
<?php
$testing  = ["EWMLMc3ES3I", "RSdKmX2BH7o", "SIXwlxhjaKY", "acp8TbBPVos", "6GpKR4-TLoI", "XLKLkTnKRwg", "6WPELkw5kD0"];

echo 'var testing = ['.$testing[0].', '.$testing[1].' ]';

?>

Эхо с php кодом js.

-1
LeXdO 31 Янв 2013 в 19:21