Передача HTML через JSON (PHP и DOJO) - PullRequest
0 голосов
/ 01 декабря 2010

У меня есть хранилище данных, которое запрашивает базу данных и выдает JSon ... что-то вроде этого:

$data[] = array('id' => $i, 'prod_id' => $product_id, 'link' => $link);

Мне интересно, как можно передать ссылку назад с помощью переменной $ link.Например, если бы у меня было это:

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

В сетке данных будет отображаться Clicky, а не фактическая ссылка html ... Есть ли способ вернуть html?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2010

Вы можете использовать formatter в сетке Dojo для форматирования 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>";
}
0 голосов
/ 01 декабря 2010

Я бы предложил отдельно передать URL-адрес ссылки и текст ссылки, а затем преобразовать их в якорную ссылку в JavaScript на стороне клиента.

Вы также можете попробовать экранировать HTML, а затем удалить его на стороне клиента.

Я понятия не имею, почему он не будет отправлять ссылки - возможно, браузер пытается проанализировать отправленный HTML слишком рано?

...