困惑:无法使用 jQuery UI 自动完成显示结果

发布于 2024-10-29 19:35:12 字数 483 浏览 1 评论 0原文

我提出了一个使用 jquery 自动完成的简单示例,但无法使其工作。我不知道出了什么问题,没有错误,我的 JSON 也没有问题,但它不显示结果。

这是我的

<div class="demo">

<div class="ui-widget">
    <label for="title">Title: </label>
    <input id="test" />
</div>


<script>
$(function() {
        $( "#test" ).autocomplete({
            source: "/searchbackend.php"
        });
});
</script>

JSON 代码:

{"title":["Metroid: Other M"]}

I threw up a simple example with jquery autocomplete and cannot get it to work. I have no idea what's wrong, no errors and nothing's wrong with my JSON, yet it doesn't display results.

Here's my code

<div class="demo">

<div class="ui-widget">
    <label for="title">Title: </label>
    <input id="test" />
</div>


<script>
$(function() {
        $( "#test" ).autocomplete({
            source: "/searchbackend.php"
        });
});
</script>

JSON:

{"title":["Metroid: Other M"]}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

断念 2024-11-05 19:35:12

来自 精细手册(关于 source 选项):

当使用字符串时,自动完成插件期望该字符串指向将返回 JSON 数据的 URL 资源。 [...]数据本身可以采用与上述本地数据相同的格式。

对于本地数据:

本地数据可以是一个简单的字符串数组,也可以包含数组中每个项目的对象,带有标签或值属性或两者。标签属性显示在建议菜单中。当用户从菜单中选择某些内容后,该值将被插入到输入元素中。

因此,您的 JSON 返回应该是一个简单的字符串数组或一个对象数组,如下所示:

[
    { label: 'Shown to humans', value: 'Value for the text input' },
     ...
] 

From the fine manual (regarding the source option):

When a String is used, the Autocomplete plugin expects that string to point to a URL resource that will return JSON data. [...] The data itself can be in the same format as the local data described above.

And for local data:

The local data can be a simple Array of Strings, or it contains Objects for each item in the array, with either a label or value property or both. The label property is displayed in the suggestion menu. The value will be inserted into the input element after the user selected something from the menu.

So, your JSON return should either be a simple array of strings or an array of objects like this:

[
    { label: 'Shown to humans', value: 'Value for the text input' },
     ...
] 
你的呼吸 2024-11-05 19:35:12

我想你的输出应该是这样的 ["HELLO","HOW","DO","YOU","DO","?"] 所以使用一维数组来输出 json。

$array = array("HELLO", "HOW", "DO", "YOU", "DO", "?");

echo json_encode($array);

伙计..这非常有效。

$array = array(
                array("label" => "HELLO", "value" => "H"), 
                array("label" => "HOW", "value" => "H"), 
                array("label" => "DO", "value" => "D"),
                array("label" => "YOU", "value" => "Y"),
                array("label" => "DO", "value" => "D"));

echo json_encode($array);

另请尝试将 source: "/searchbackend.php" 更改为 source: "searchbackend.php"

I guess your output should be like this ["HELLO","HOW","DO","YOU","DO","?"] so use 1d array to output json.

$array = array("HELLO", "HOW", "DO", "YOU", "DO", "?");

echo json_encode($array);

Man .. this perfectly works.

$array = array(
                array("label" => "HELLO", "value" => "H"), 
                array("label" => "HOW", "value" => "H"), 
                array("label" => "DO", "value" => "D"),
                array("label" => "YOU", "value" => "Y"),
                array("label" => "DO", "value" => "D"));

echo json_encode($array);

Also try changing source: "/searchbackend.php" to source: "searchbackend.php"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文