通过JSON传递HTML(PHP和DOJO)

通过JSON传递HTML(PHP和DOJO),php,javascript,json,datagrid,dojo,Php,Javascript,Json,Datagrid,Dojo,我有一个数据存储,正在查询数据库并输出JSon。。。大概是这样的: $data[] = array('id' => $i, 'prod_id' => $product_id, 'link' => $link); 我想知道如何使用$link变量传回链接。如果我有这个例子: $link = "<a href=\"google.com\"> Clicky </a>"; $link=”“; datagrid将显示Clicky,而不是实际的html链接。。。

我有一个数据存储,正在查询数据库并输出JSon。。。大概是这样的:

$data[] = array('id' => $i, 'prod_id' => $product_id, 'link' => $link);
我想知道如何使用$link变量传回链接。如果我有这个例子:

$link = "<a href=\"google.com\"> Clicky </a>";
$link=”“;

datagrid将显示Clicky,而不是实际的html链接。。。是否有返回html的方法?

我建议分别传递链接URL和链接文本,然后在客户端将它们重建为JavaScript中的锚链接

您还可以尝试转义HTML,然后在客户端转义


我不知道它为什么不发送链接-也许浏览器试图过早解析发送的HTML?

您可以使用dojo网格中的
格式化程序来格式化每个单元格中显示的HTML。创建网格时,可以为每列设置
格式设置程序。
formatter
是一个JavaScript函数,它接受两个参数,第一个
value
表示单元格的值,第二个
rowIndex
表示当前行的索引。
formatter
函数的返回值是单元格中显示的HTML内容

对于您的情况,我建议您对链接URL和锚文本使用单个列。您可以使用简单的编码,如
http://www.google.com$$$Clicky
,其中
$$$
用于分隔这两个字段。PHP代码是:

$link = "http://www.google.com$$$Clicky";
然后,在
格式化程序
功能中,您可以使用:

function(value, rowIndex) {
    var parts = value.split('$$$');
    return "<a href='" + parts[0] + "'>" + parts[1] + "</a>";
} 

谢谢你的精彩解释。然而,我最终使用了escapeHTMLInData=“false”命令。。但以后会记住格式化程序函数!:)啊,Escapeehtmlindata='false',我以前不知道。谢谢你提供的信息。:)
function(value, rowIndex) {
   var item = grid.getItem(rowIndex); // Get the store item by index, need the reference of the grid.
   var anchorText = grid.store.getValue(item, 'anchorText');
   return "<a href='" + value + "'>" + anchorText + "</a>";
}