在以下代码中,值item.rmid
由jQuery提供。该值是从数据库中获取的,显示在item.rmid
中,并且必须存储在Yii::app()->SESSION["rid"]
中,但它不起作用。
在视图中我有以下代码:
$("#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 :: app() - &gt; SESSION [“rid”]哪个不能在每次迭代中存储所有值...
我如何在查询字符串中传递它,但值得隐藏
答案 0 :(得分:1)
如果没有 AJAX ,您无法通过javascript更新服务器上的内容。 使用ajax向服务器发送请求并使用
更新会话值 Yii::app()->session['var'] = $_POST['received_value'];
了解ajax here。
答案 1 :(得分: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。看看这个。
但是从您的代码示例中看起来您已经拥有服务器上的所有值(以$ar
变量,采用JSON格式),因此您只需在PHP上分配会话变量并仅为客户端使用javascript-侧面可视化。
首先你需要解码JSON:
$decoded = json_decode($ar);
现在$ decode只是一个PHP对象数组,所以你可以这样做:
Yii::app()->session["rid"] = $decoded[0]->rid;
上面我们将第一个对象的“rid”存储到会话中。如果你想要存储所有这些,只需循环遍历$encoded
,同时将值推送到会话,如下所示:
foreach ($decoded as $obj) {
Yii::app()->session["rids"][] = $obj->rid;
}