所以我遇到以下代码的问题。我有一个格式化的数组:
{label:movie, value:location}
以下代码仅在搜索框中显示标签,单击时使用该信息制作网址。我需要它从数组而不是标签传递值字段。我已经尝试将suggestions.push(val.label)更改为suggestions.push(val.value),此时点击网址有效,但网址显示在搜索框中而不是标签。我是Jquery和Json的新手,所以我真的是盲目的。
$(function(){
//attach autocomplete
$("#to").autocomplete({
minLength: 2,
//define callback to format results
source: function(req, add){
//pass request to server
$.getJSON("/movie.php?callback=?", req, function(data) {
//create array for response objects
var suggestions = [];
//process response
$.each(data, function(i, val){
suggestions.push(val.label);
});
//pass array to callback
add(suggestions);
});
},
focus: function (event, ui) {
$(event.target).val(ui.item.label);
return false;
},
select: function (event, ui) {
$(event.target).val(ui.item.label);
window.location = ui.item.value;
return false;
},
});
});
答案 0 :(得分:1)
你很亲密。您不需要在success
回调中执行的后处理:
source: function(req, add){
//pass request to server
$.getJSON("/movie.php?callback=?", req, add);
},
自动完成窗口小部件可以获取对象数组,只要这些对象具有label
和/或value
属性即可。
由于您在AJAX调用的结果中提供了两者,因此您应该通过直接调用add
函数作为AJAX回调的成功方法来获得所需的行为。