вернуть строку json с html символами? - PullRequest
0 голосов
/ 16 декабря 2009

Я хочу вызвать php с помощью jquery ajax, чтобы выполнить некоторые операции с базой данных, а затем вернуть 2 списка ссылок. поэтому я должен передать эти два списка ссылок обратно в jquery, чтобы он мог отображать список 1 в левой части веб-страницы и список 2 в правой части.

я создал списки в отдельных массивах, которые я отправляю обратно в jquery с помощью json_encode, но заметил, что он экранирует все символы html.

<a>dog</a> became <a>dog<\/a>

поэтому, когда я отобразил список в html, они больше не связывались.

как мне сохранить html-коды в моих возвращенных массивах в jquery?

РЕДАКТИРОВАТЬ: это правильный путь, если вы хотите разделить данные из php, чтобы jquery мог отображать их в разных местах в html?

// list 1
while($row = mysqli_fetch_assoc($saved_tags))
{
    $display_saved_tags[] = "<a id='showtag' href='answer.php?id=" . $row['id'] . "'>" . $row['name'] . "</a><br />";
}

// list 2
while($row = mysqli_fetch_assoc($related_tags))
{
    $display_related_tags[] = "<a id='showtag' href='answer.php?id=" . $row['id'] . "'>" . $row['name'] . "</a><br />";
}

// return lists to jquery
echo json_encode('display_saved_tags' => $display_saved_tags, 'display_related_tags' => $display_related_tags));

Ответы [ 2 ]

6 голосов
/ 16 декабря 2009
Экранирующие символы

json_encode напрямую конфликтуют с выводом HTML. У меня была такая же проблема, но я решил использовать альтернативное решение в то время. Я просто подумал, что вы могли бы сделать это:

$data = new stdClass();
$data->html1 = base64_encode('<h1>html in here</h1>');
$data->html2 = base64_encode('<p><strong>more html</strong></p>');
echo json_encode($data);

На фронтенде:

callbackFunction(json) {
    alert(base64_decode(json.html1));
    alert(base64_decode(json.html2));
}

Вам понадобятся реализации javascript для base64_decode и utf8_decode, которые можно найти по адресу: http://phpjs.org/functions/base64_decode:357

0 голосов
/ 16 декабря 2009

Использование может использовать функцию ниже, чтобы отключить символы при чтении или отправке в браузер:

 html_entity_decode('your response here');

Кроме того, поскольку вы используете json_encode, убедитесь, что вам не нужна нижеуказанная функция в вашем коде:

json_decode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...