【问题标题】:getJSON how to set data to array?getJSON如何将数据设置为数组?
【发布时间】:2023-03-30 01:25:01
【问题描述】:

我是一名业余程序员,所以请放轻松。我试图只调用一次 getJson 来拉出一个数组,然后让 jquery 自动完成将其用作源。似乎这段代码从未调用处理程序。

<script>   

$(function () {
        var availableTags[];
        $.getJSON("./Handler.ashx", function(data) {
            availableTags = data;
        });

        $("#TextBox3").autocomplete({
            source: availableTags
        });
    });
</script>

下面的代码有效,但我不希望 js 每次都调用处理程序。

<script>        
$(function () {
        $("#TextBox3").autocomplete({
            source: "./Handler.ashx",
            minLength: 3,
            select: function (event, ui) {
                $(this).val(ui.item.value);
            }
        });
    });

</script>

【问题讨论】:

    标签: jquery json autocomplete


    【解决方案1】:

    试试这样的:

    <script>   
    
    $(function () {
            $.getJSON("./Handler.ashx", function(data) {
                $("#TextBox3").autocomplete({
                    source: data
                });
            });           
        });
    </script>
    

    【讨论】:

    • 谢谢大家,我意识到我的问题出在我的处理程序上。我之前已经将它编码为使用从自动完成传递的查询字符串并忘记注释掉。这导致了异常错误。发布的这段代码效果很好。
    【解决方案2】:

    AJAX 调用是异步的,因此您试图在数据到达之前使用它。使用回调函数内部的数据:

    $(function () {
      $.getJSON("./Handler.ashx", function(data) {
        $("#TextBox3").autocomplete({
          source: data
        });
      });
    });
    

    【讨论】:

    • 网址中的.真的有效吗?
    • @Craig:是的,单个句点表示“当前目录”。
    • 谢谢,我完全没有意识到单个. 可以从客户端工作,但我知道../ 这样做是我的一个愚蠢的假设:) 哦这么多细节,我让这个逃走。
    • 是的,我使用的是相对路径,因为没有它,Visual Studio 调试会呕吐,因为网站不在调试 Web 服务器的根目录下运行。我尝试发布到网络服务器,但仍然没有好处。脚本 #2 仍然可以正常工作,但我可以看到它在每次按键时都会进行调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2017-09-21
    相关资源
    最近更新 更多