Javascript 无法将对象数组映射到jQuery自动完成

Javascript 无法将对象数组映射到jQuery自动完成,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我正在将jQuery自动完成插件添加到我的项目中。我有一个源值,它是一个对象数组(来自mySQL数据库)。我无法将它们映射到所需的自动完成格式 这是要映射的数据: [{ “值”:“730”, “标签”:“iPhone” }, { “价值”:“731”, “标签”:“屏幕保护器” }, { “价值”:“732”, “标签”:“Maxboost” }, { “价值”:“733”, “标签”:“JETech” }, { “价值”:“734”, “标签”:“Mr Shield” }] $(“#产品一”

我正在将jQuery自动完成插件添加到我的项目中。我有一个源值,它是一个对象数组(来自mySQL数据库)。我无法将它们映射到所需的自动完成格式

这是要映射的数据:

[{
“值”:“730”,
“标签”:“iPhone”
}, {
“价值”:“731”,
“标签”:“屏幕保护器”
}, {
“价值”:“732”,
“标签”:“Maxboost”
}, {
“价值”:“733”,
“标签”:“JETech”
}, {
“价值”:“734”,
“标签”:“Mr Shield”
}]
$(“#产品一”)。自动完成({
来源:$.ajax({
键入:“获取”,
url:“/wp json/product/product info/”,
成功:功能(res){
$。每个(res,功能(键,val){
返回{
“标签”:val.label,
“值”:val.value
}
});
}
});
});

如果您对问题有任何建议或修改,我们将不胜感激。

这个问题是因为您提供的
源代码
是一个jqXHR对象,而不是它期望的数组、字符串或函数()

考虑到AJAX的使用,最好使用提供一个使用
请求
响应
参数的函数。还请注意,由于您检索的数据已采用正确的格式(即具有
标签
属性的对象数组),因此您可以直接将其提供给
响应()
,而无需对其进行循环。试试这个:

$(“#产品一”)。自动完成({
来源:功能(请求、响应){
$.ajax({
键入:“获取”,
url:“/wp json/product/product info/”,
成功:功能(数据){
答复(数据);
}
});
}
});

您应该首先加载数据,然后将其设置为自动完成的源

$.ajax({               
      type:"GET",
      url: "/wp-json/product/product-info/",
      success:function(res){

           //Based on your object creation, it looks that you can directly use the response
           $( "#product_one" ).autocomplete(res);   

      }
});

关于@Rory McCrossan,我还有一个问题,我想显示autocomplete更改事件的一些输出,那么,我该怎么做?如果我理解了您的要求,默认情况下应该会发生。如果您对自动完成的工作方式有具体问题,我建议您开始一个新问题