我已经搜索了相关的问题,但是大多数都与jquery ui有关,我没有使用,其余的与我的问题无关。
我正在使用this autocomplete plugin [不是UI一个]并且通过SQL返回多个值。我想只显示一个值作为自动完成功能,但我想在用户点击建议时使用其他两个值 - 它应该重定向到另一个具有其他值的页面。
例如:我已返回数据:ABC 001 55
。
ABC应该在列表中显示为建议值,但是当用户点击ABC
时,它应该使用其他两个值重定向页面:page/001/55/
这是我到目前为止的代码,虽然建议正确[data[0]
]但我尝试使用data[1]
和data[2]
来传递其他两个数据,但这会引发未定义的错误:
PHP:
foreach ($items as $item) {
$value = $item['ABC'];
$noID = $item['NoID'];
$cID = $item['cID'];
echo $value . "\n";
}
JQUERY:
$('#f').autocomplete('redirect.php', {
width: 500,
max: 15,
highlight: function(match, keywords) {
keywords = keywords.split(' ').join('|');
return match.replace(new RegExp("("+keywords+")", "gi"),'<b>$1</b>');
},
formatItem: function(data) {
return data[0];
}
}).result(function(event, data) {
if (data) {
//var noID = data[1];
//var cID = data[2];
//location.href = "anotherpage.php?s=" +noID+ "/" +cID;
alert(data[0] + data[1] + data[2]); // <- data 1 and 2 are shown as undefined.
}
});
答案 0 :(得分:1)
您似乎没有“回应”PHP脚本中的所有必要值。
查看插件的源代码,解析方法需要这样:
Data1|Data2|Data3\n
Data1|Data2|Data3\n
Data1|Data2|Data3\n
我不熟悉php,但你的脚本应输出如下内容:
echo "$value|$noID|$cID\n";
有关信息,这是插件中的解析方法:
function parse(data) {
var parsed = [];
var rows = data.split("\n");
for (var i=0; i < rows.length; i++) {
var row = $.trim(rows[i]);
if (row) {
row = row.split("|");
parsed[parsed.length] = {
data: row,
value: row[0],
result: options.formatResult && options.formatResult(row, row[0]) || row[0]
};
}
}
return parsed;
};