我正在使用JQuery自动完成并发送带有“label”和“value”的响应。 我正在尝试让标签格式化HTML。 json_encode转义了我试图通过的html格式。
我应该这样做吗?如何使json_encode不能转义html格式(它将“/”更改为“\ /”)?
示例代码:
$return[$i]['label'] = $row['text'];
$return[$i]['label'] = "<span style='font-weight:bold;'>" . $row['text'] . "</span> - " . row['name'];
json_encode($return);
当我手动检查网址响应时,我可以看到他正在逃避“”到“&lt; \ / span&gt;”
答案 0 :(得分:4)
我不确定您使用的是哪种自动播放功能。如果您使用的是http://jqueryui.com/demos/autocomplete/,则问题不在于json,标签默认情况下不支持html
标签始终被视为文本,如果您希望将标签视为html,则可以使用Scott González' html extension。这些演示都集中在源选项的不同变体上 - 寻找与您的用例匹配的变体,并查看代码
你可以这样做。代码正在做的是以黄色显示自动完成匹配文本。
function autoCompleteRender(ul, item) {
var searchTerm = this.term;
var itemLabel = item.label;
itemLabel = itemLabel.replace(new RegExp("(" + searchTerm + ")", "gi"), '<strong class="itemhover">$1</strong>');
return $("<li></li>").data("item.autocomplete", item).append("<a>" + itemLabel + "</a>").appendTo(ul);
}
$(yourselector).autocomplete({
source: function(request, response) {
//your source
}
}).data("autocomplete")._renderItem = autoCompleteRender;