如何将 JSON 对象内的 JSON 数组传递给 jQuery autocomplete

How to pass JSON Array inside JSON object to jQuery autocomplete

本文关键字:JSON 数组 jQuery autocomplete 对象      更新时间:2023-09-26

我正在使用jQuery自动完成功能通过Ajax调用接收特定数据。我从 Ajax 调用接收的数据是一个 JSON 对象,其中包含一个 JSON 数组。我需要将此 json 数组的每个结果显示在自动完成搜索结果中。格式是这样的:

{
    "returnCode":"success",
    "status":"success", 
    "searchResults" :[{"val":"123"},{"val":"456"},{"val":"789"}]
   }

现在我需要在自动完成下拉列表中显示 123 456 和 789。尝试了formatItem和formatResult中的一些代码,但似乎没有达到目的。

formatItem: function(row,i,max) {
var returnObject = eval("(" + row + ")");
var searchResults = returnObject.searchResults;
if(searchResults.length>0){
    for(i=1; i<searchResults.length; i++){
        // What to do here?
    }
}

尝试

var cache = {};
elem.autocomplete({
    minLength: 2,
    source: function(request, response) {
      var term = request.term;
      if (!!cache[term]) {
        response(cache[term][0]);
        return
      };
      cache[term] = [];
      $.getJSON("/path/to/json/")
      .then(function success(data) {
          var res = $.map(data.searchResults, function(val) {
            return val.val
          });          
          cache[term].push(res);
          response(res)
        }, function error(jqxhr, textStatus, errorThrown) {
             console.log(textStatus, errorThrown) // log `$.ajax` errors
      })
    }
});

JSFIDDLE http://jsfiddle.net/guest271314/wr1wg5df/