我已经在我的网站上安装了 jquery 自动完成功能,现在我正试图让它从我从数据库中提取的数据中显示图像。
但是我遇到了一个问题,因为它在提取我的图像数据和产品名称时,它在自动完成下拉菜单中将 html 显示为文本。
希望有人能看到我哪里出错并指出我正确的方向!
$(document).ready(function() {
$(function() {
$( "#autocomplete" ).autocomplete({
source: function(request, response) {
$.ajax({ url: "<?php echo site_url('homepage_products/suggestions'); ?>",
data: { term: $("#autocomplete").val()},
dataType: "json",
type: "POST",
success: function(data){
var data_to_return = new Array();
for (var i = 0; i < data.length; ++i) {
data_to_return.push("<li><a>" + "<img src='" + data[i].image + "' />" + data[i].prodid+ " - " + data[i].product_name+ "</a></li>");
}
response(data_to_return);
}
});
},
minLength: 4
});
});
});
谢谢!
- - - - - - -编辑 - - - - - - -
好的,在 Spokey 的建议之后,我现在将我的代码更改如下,并且我已经设法让我的结果显示在 html 中,而不仅仅是文本:
$(function() {
$( "#autocomplete" ).autocomplete({
source: function(request, response) {
$.ajax({ url: "<?php echo site_url('homepage_products/suggestions'); ?>",
data: { term: $("#autocomplete").val()},
dataType: "json",
type: "POST",
success: function(data){
var data_to_return = new Array();
for (var i = 0; i < data.length; ++i) {
data_to_return.push("<li><a href = '/shop/products/id/" + (data[i].image).toLowerCase() + ".htm'>" + "<img src='/shop/images/product_thumbs/" + (data[i].image).toLowerCase() + ".jpg' />" + data[i].id + " - " + data[i].name+ "</a></li>");
}
response(data_to_return);
}
});
},
select: function( event, ui ) {
alert(ui.item.value);
window.location.href = ui.item.value;
},
minLength: 2
}).data("autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.image + "</a>")
.appendTo(ul);
};
});
但是现在我没有收到任何特定的 javascript 错误,但图像没有出现。我已经尝试过绝对路径,并且我已经检查过它们确实存在于服务器上 - 但是当我将鼠标滚动到图像应该出现在下拉列表中的位置时,我得到的只是一个灰色框。
希望有人能发现我的错误!
我还发现这个链接非常有用,并认为我会推荐给其他试图实现类似目标的人:
-------------最终修复-------------
哎呀-最后是我是个白痴-我在打电话
item.image
我应该打电话的时候
item.label
谢谢您的帮助!