Использование javascript для назначения переменной php

Я купил modalbox-плагин на рынке envato, сделанный в javascript, я хочу использовать его для реализации моих категорий> подкатегорий> элементов. В любом случае, я знаю, что переменной JavaScript может быть присвоено значение с использованием php, но мне нужно обратное.

На моем первом шаге я разрешаю пользователю выбирать категорию, используя базовые ссылки, тогда onclick даже переносит их на второй слайд, где я хочу отображать подкатегории и элементы, относящиеся к этой категории, которая была выбрана.

Я попробовал две вещи:

1) setting onClick = "step2();<?php $chosen_cat = ' . $this->db->escape(trim($category)) . '?>" 

Надеюсь, я могу просто присвоить имя выбранной категории значению, а затем просто использовать метод $ selected_cat в методе javascript step2 () для отображения продуктов, однако это нарушает javascript, так как в результате возникает конфликт;

2) Я изменил step2 () на step2 (category), а затем использовал onclick = "step2 (db-> escape ($ category););" это передает значение методу step2 (), однако теперь мне нужно будет вызвать <- мне нужно будет распечатать эту строку для php, но я не знаю, как решить эту проблему, учитывая, что PHP -> JS является жизнеспособным, поскольку его сервер клиент отношение но задний ..

$ This-> db-> escape () – это метод http://codeigniter.com/user_guide/database/queries.html codeigniter.

Мой код:

 <script type="text/javascript"> function step1() { modalbox.show(new Element("div").insert( new Element("p", { "align": "justify" }).insert( <?php $categories = $items; $chosen_cat = ''; ?> <?php $i = 0; foreach($categories as $category => $itemarray) { $i++; if($i==27){ echo $this->db->escape('<a class="category" onclick="step2();<?php $chosen_cat = ' . $this->db->escape(trim($category)) . '?>" href="#">'. trim($category) . '</a>'); } else { echo $this->db->escape('<a class="category" onclick="step2();" href="#">' . trim($category) . '</a>') . '+'; } } ?> ) ), { "title" : "Step 1/3", "width" : 800, "options" : [{ "label" : "Next »", "onClick" : step2 }] }); }; function step2() { alert(<?php $this->db->escape($chosen_cat); ?>); modalbox.show([ new Element("div").insert( new Element("p", { "align": "justify" }).insert( "If you open a modalbox when another one is opened, it will stretch to the new " + "modalbox width and height and overwrite the content.<br /\><br /\>" + "You can use HTML or Prototype Elements like a DIV or a TABLE." ) ), new Element("p", { "align": "justify" }).insert( "You can have multiple contents on a single modalbox by using an array like this:<br /\><br /\>" + "<pre>modalbox.show([ content1, content2, ... ], options);</pre>" ) ], { "title" : "Step 2/3", "width" : 800, "options" : [{ "label" : "« Previous", "onClick" : step1 }, { "label" : "Next »", "onClick" : step3 }] }); }; function step3() { modalbox.show([ new Element("div").insert( new Element("p", { "align": "justify" }).insert( "If you open a modalbox when another one is opened, it will stretch to the new " + "modalbox width and height and overwrite the content.<br /\><br /\>" + "You can use HTML or Prototype Elements like a DIV or a TABLE." ) ), new Element("p", { "align": "justify" }).insert( "You can have multiple contents on a single modalbox by using an array like this:<br /\><br /\>" + "<pre>modalbox.show([ content1, content2, ... ], options);</pre>" ) ], { "title" : "Step 3/3", "width" : 800, "hideOnPageClick": false, "options" : [{ "label" : "« Previous", "onClick" : step2 }, { "label" : "Finish", "isDefault" : true, "onClick" : modalbox.hide }] }); }; </script> 

Можно ли установить переменную сеанса с JavaScript в событии onclick, скажем $ _SESSION ['category'] = 'category' в стиле js, а затем прочитать этот сеанс с php и отключить его, я не думаю, что это создало бы большую часть безопасности проблема, поскольку сессия будет существовать на протяжении менее секунды.

Solutions Collecting From Web of "Использование javascript для назначения переменной php"

JavaScript никогда не будет устанавливать переменную PHP. JavaScript работает на клиенте и PHP на сервере. Если вам нужно что-то изменить на сервере от JS, вы должны использовать AJAX или отправить обычный HTTP-запрос.

Кроме того, вы можете генерировать PHP данные, необходимые во время выполнения на клиенте, обычно путем печати некоторого JSON, чтобы стать переменной JS

В вашем примере вам понадобится что-то вроде следующего (я буду использовать jQuery для простоты)

 ... onclick="$.ajax('/category.php').done(function(data) {step2(data.category);})" 

Что было бы гораздо приятнее, если бы не JS в HTML

 $('#my-button').click(function(){ $.ajax('/category.php').done(function(data) { step2(data.category); }); }); 

Я не могу дать вам учебник AJAX, но главное, что вы сделаете запрос AJAX, когда вам понадобятся данные с сервера.