2012-09-06 48 views
0

我有这个脚本里面的heredoc,我试图解析一个JSON到一个表,实际上,如果我没有表演它。脚本本身分为两部分,并在php中与两个不同的公共函数沟通。第一部分使用捕获每个会话从另一个表中读取json。第二部分试图捕捉在该特定会议上所做的所有行动。听起来有点复杂,但第二部分不起作用。我从javascript转到php并返回到javascript。 不工作的部分是:php和javascript在heredoc

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函数,返回给定使sesion内执行的操作的数量。

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

“返回$ STR” 显示0sesion。所以当我看到它,JavaScript中的变量不是在php中通过

当我改变

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

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

输出显示的字符串itemsesion

+0

难道你不知道在哪里使用引用文字和代码块? –

回答

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>'";