我有一个数据存储区,它正在查询数据库并输出JSon ......就像这样:
$data[] = array('id' => $i, 'prod_id' => $product_id, 'link' => $link);
我想知道如何使用$ link变量传回链接。如果我有这个例子:
$link = "<a href=\"google.com\"> Clicky </a>";
数据网格会显示Clicky而不是实际的html链接...无论如何都要传回html?
答案 0 :(得分:0)
我建议单独传递链接URL和链接文本,然后在客户端将它们重构为JavaScript中的锚链接。
您也可以尝试转义HTML,然后在客户端进行转义。
我不知道它为什么不发送链接 - 也许浏览器试图过早解析发送的HTML?
答案 1 :(得分:0)
您可以在dojo网格中使用formatter
来格式化每个单元格中显示的HTML。创建网格时,您可以为每列设置formatter
。 formatter
是一个JavaScript函数,它接受两个参数,第一个value
表示单元格的值,第二个rowIndex
表示当前行的索引。 formatter
函数的返回值是单元格中显示的HTML内容。
对于您的情况,我建议您对链接URL和锚文本使用单个列。您可以使用简单的编码,例如http://www.google.com$$$Clicky
,其中$$$
用于分隔这两个字段。 PHP代码将是:
$link = "http://www.google.com$$$Clicky";
然后在formatter
函数中,您可以使用:
function(value, rowIndex) {
var parts = value.split('$$$');
return "<a href='" + parts[0] + "'>" + parts[1] + "</a>";
}
如果您希望为每个字段使用一列,例如URL为url
,锚文本为anchorText
。然后,您需要在格式化单元格时获取另一列的值。假设网格使用url
字段。然后formatter
函数可能如下所示:
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>";
}