2014-01-16 48 views
0

在下面的代碼中,值爲item.rmid由jQuery提供。該值從數據庫中提取,顯示在item.rmid中,並且必須存儲在Yii::app()->SESSION["rid"]中,但它不起作用。無法爲Yii中的會話變量分配jquery值

鑑於我有以下代碼:

$("#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"}] 

但一時無法分配RID值.........知道我得到它我有多個擺脫和我把它分配給一個的Yii ::應用程序( ) - > SESSION [「rid」]哪個不能在每次迭代中存儲所有值...
如何將它傳遞給查詢字符串但價值被隱藏

+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不是一個後期值是從數據庫中獲取它.........你想說什麼,你可以請張貼一些樣本 – hir

1

要注意的主要問題是,當瀏覽器運行您的JavaScript時,PHP代碼部分已經完成工作。你的代碼只是將字符串' + item.rmid + '分配給某個PHP變量。它只是一個常量字符串,它根本就沒有連接到你的javascript。之後,您的瀏覽器得到如下所示的javascript:

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

請注意它是如何由PHP「預處理」的。它甚至不是真正的JavaScript,因爲你不能在JavaScript中使用多行字符串文字。

你可以做的是從javascript推送一些價值到你的服務器。因此,您需要先將JavaScript代碼提供給您的瀏覽器,然後在JavaScript中獲得您的值,然後以某種方式讓另一個HTTP請求將該值作爲GET參數或其他內容傳遞。有一種技術用於此目的,它被稱爲AJAX。看一下這個。

但是從您的代碼示例中可以看出,您已經擁有服務器上的所有值(採用JSON格式的$ar變量),因此您只需在PHP上分配會話變量並僅將JavaScript用於客戶端可視化。

首先,你需要解碼JSON:

$decoded = json_decode($ar); 

現在$解碼就是PHP對象的數組,所以你可以這樣做:在上面我們存儲的「RID

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

「會議的第一個對象。如果你想所有這些存儲只是遍歷$encoded同時推動值會是這樣的:

+0

我正好具有$ ar中的所有值只有我需要的是在會話中存儲特定的rmid ...... – hir

+0

via Yii :: app() - > session [「rid」] = $ ar [0] [「rmid」];我仍然無法分配值 – hir

+0

@tisha這是什麼意思,你是「無法指定」?它會拋出一些錯誤嗎?嘗試使用'var_dump'來精確確定此次調用後存儲在會話中的值。用新的代碼更新你的問題(但不要扔掉你原來的問題,只是添加UPD部分) – vbo