帮助获取传递给Jquery Autocomplete插件的正确信息,以获得可点击的结果

时间:2011-09-19 22:10:47

标签: php jquery jquery-ui autocomplete jquery-ui-autocomplete

所以我遇到以下代码的问题。我有一个格式化的数组:

{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;
        },
    });
});

1 个答案:

答案 0 :(得分:1)

你很亲密。您不需要在success回调中执行的后处理:

source: function(req, add){
    //pass request to server
    $.getJSON("/movie.php?callback=?", req, add);
},

自动完成窗口小部件可以获取对象数组,只要这些对象具有label和/或value属性即可。

由于您在AJAX调用的结果中提供了两者,因此您应该通过直接调用add函数作为AJAX回调的成功方法来获得所需的行为。