2014-01-16 6 views
0

В следующем коде значение item.rmid предоставляется jQuery. Значение извлекается из базы данных, отображается в item.rmid и должно быть сохранено в Yii::app()->SESSION["rid"], но оно не работает.Невозможно присвоить значение jquery переменной сеанса в Yii

В связи у меня есть следующий код:

$("#pct").html(''); 
     $.each(<?php echo $ar; ?>, function (i, item) { 

      $("#pct").append(' 
<div class="title"> 
    fss" 
    <?php Yii::app()->SESSION["rid"]=' + item.rmid + ' ; ?>" 
    <?php echo Yii::app()->SESSION["rid"];?> 
</div>') 

}

Что я делаю неправильно?

UPD когда я var_dump ($ ar); Вот что я получаю

string '[{"pimg":"12.jpg","pid":"3","createdate":"2014-01-15 12:12:47","rid":"25"},{"pimg":"WP9.JPG","pid":"1","createdate":"2014-01-15 12:14:23","rid":"26"},{"pimg":"n2.jpg","pid":"4","createdate":"2014-01-16 11:01:27","rid":"54"}] 

но я не в состоянии присвоить значение избавить ......... знаю, я получил его я есть несколько избавились, и я назначить его на один Yii :: приложение () -> SESSION [ «избавиться»], который не могу хранить все значения на каждой итерации ...
как я передать его в строку запроса, но valueto быть скрыты

+0

Где находится Javascript-код? – Pinal

+0

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

ответ

1

Вы не можете обновить материал на сервере с помощью JavaScript без AJAX. Использование Ajax для отправки запроса на сервер и обновить значение сеанса, используя

Yii::app()->session['var'] = $_POST['received_value']; 

Читайте о AJAX here.

+0

без сеанса, способного отображать значение. Но я хочу назначить его переменной сеанса, которая единственное, что мне нужно ... обновили вопрос – hir

+0

мой ответ решает проблему, которую вы имеете, вам нужно использовать ajax для обновления сеанса. – Rohan

+0

item.rmid не является значением для сообщения, которое я получаю от db ........., что вы пытаетесь сказать, можете ли вы отправить какой-то пример – hir

1

Главное отметить, что часть кода PHP уже завершена, когда ваш браузер запускает ваш javascript. То, что делает ваш код, просто назначает строку ' + item.rmid + ' некоторой переменной PHP. Это просто постоянная строка, которая вообще не связана с вашим javascript. После этого ваш браузер получает что-то вроде следующего JavaScript:

$("#pct").html(''); 
$.each(some_array_from_php, function (i, item) { 
    $("#pct").append(' 
     <div class="title"> 
      fss"" 
      + item.rmid + 
     </div>') 
} 

Обратите внимание, как он получает «препроцессированный» РНР. Это даже не хороший javascript, потому что вы не можете использовать многострочные строковые литералы в javascript.

Что вы можете сделать, это нажать некоторое значение с javascript на ваш сервер. Таким образом, вам нужно сначала подать код JavaScript в свой браузер, получить доступную ценность в javascript, а затем каким-то образом сделать другой HTTP-запрос, передающий значение как параметр GET или что-то еще. Для этой цели есть технология, она называется AJAX. Проверь это.

Но из вашего примера кода, похоже, что у вас уже есть все значения на сервере (в переменной $ar, в формате JSON), поэтому вы можете просто назначить переменную сессии на PHP и использовать javascript только для визуализации на стороне клиента.

Прежде всего, необходимо декодировать JSON:

$decoded = json_decode($ar); 

Теперь $ декодированию просто массив объектов PHP, так что вы можете сделать что-то вроде:

Yii::app()->session["rid"] = $decoded[0]->rid; 

Выше мы сохраняем «избавилась "первого объекта для сеанса.Если вы хотите сохранить все из них просто перебрать $encoded, выдвигая значение сессии, как это:

+0

точно, у меня есть все значения в $ ar Единственное, что мне нужно, это сохранить этот конкретный rmid в сеансе .... – hir

+0

через Yii :: app() -> session ["rid"] = $ ar [0] ["rmid"]; я все еще не могу присвоить значение – hir

+0

@tisha, что означает, что вы «неспособны назначить»? Вызывает ли ошибка? Попробуйте 'var_dump' точно определить значение, сохраненное в сеансе после этого вызова. Обновите свой вопрос с помощью нового кода (но не отбрасывайте свой исходный вопрос, просто добавьте раздел UPD) – vbo

Смежные вопросы