0

我在一个heredoc中有这个脚本,我试图将一个json解析为一个表,如果我不夸大它,它实际上是有效的。脚本本身分为两部分,并与 php.ini 中两个不同的公共函数通信。第一部分使用捕获每个会话从另一个表中读取 json。第二部分是试图捕捉在该特定会话上所做的所有操作。听起来可能有点复杂,但第二部分不起作用。我从 javascript 到 php 再回到 javascript。不工作的部分是:

var tblRow = '<tr><td>{$this->obj->display_ses('logs',
''+item.sesion)}</td><tr>

这是它显示在该会话中执行了多少操作的部分,但是当我尝试捕获输出时,“item.sesion”显示为0sesion 。

<script> $('#alllogins tbody').html(''); var myObject = {$this->obj->display_mysql_data_rows("logins.id as id,logins.ip as ip,logins.sesion as sesion, logins.country as country,logins.data as data,logins.user as user,admin.emri as emri, admin.mbiemri as mbiemri", "(logins,admin)","$str ORDER BY id DESC LIMIT $offset, $rowsperpage")}; $.each(myObject, function(i, item) { var tblRow = '<tr><td>{$this->obj->display_ses('logs', ''+item.sesion)}</td><td>'+item.ip+'</td><td>'+item.country+'</td><td>'+item.data+'</td></tr>'

$(tblRow).appendTo('#alllogins tbody'); });
</script>

这是 php 函数,它返回在给定会话中执行的操作数。

public function display_ses($db, $str) { $r = mysql_query("SELECT *
from ".$db." WHERE session='".$str."'"); $num_rows =
mysql_num_rows($r); return $str; }

“return $str”显示0sesion。所以正如我所看到的,javascript 中的变量没有在 php中传递。

当我改变

{$this->obj->display_ses('logs', **''+item.sesion**)}

{$this->obj->display_ses('logs', **item.sesion**)}

输出显示字符串itemesion

4

1 回答 1

0

在字符串或 heredoc 中,仅扩展普通变量和对象引用,而不是函数调用。而不是使用heredoc,您应该切换进出PHP模式,例如

?>
w = '<tr><td> <?= $this->obj->display_ses('logs', ''+item.sesion) ?> </td><tr>

或者,如果它们只是短位,您可以使用 PHP 字符串连接:

echo '<script> $("#alllogins tbody").html(""); var myObject = '.
     $this->obj->display_mysql_data_rows("logins.id as id,logins.ip as ip,logins.sesion as sesion, logins.country as country,logins.data as data,logins.user as user,admin.emri as emri, admin.mbiemri as mbiemri", "(logins,admin)","$str ORDER BY id DESC LIMIT $offset, $rowsperpage").
     "</td><td>'+item.ip+'</td><td>'+item.country+'</td><td>'+item.data+'</td></tr>'";
于 2012-10-06T08:32:22.087 回答