Jquery UI 自动完成不显示结果

发布于 2024-11-26 10:28:15 字数 1322 浏览 2 评论 0原文

我知道问题标题似乎重复,但我一直无法找到这个问题的答案。

我正在使用 Jquery UI 的自动完成功能,并且可以在调试器中看到正确的 JSON 数据。但是,文本框中没有任何内容。

我的 javascript:

<script type="text/javascript">
    $(document).ready(function () {
        myAutoComplete("#<%= myTxtBox.ClientID %>", "AutoCompletePage.aspx");
    });

    function myAutoComplete(ObjectId, DataURL) {
        $(ObjectId).autocomplete({
            source: function (request, response) {
                $.ajax({ url: DataURL, dataType: 'jsonp',
                    data: { q: request.term, limit: 10 },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item[1], value: item[0], id: item[0]}
                        }))
                    }
                })
            }
        });
    }

</script>

来自我的 AutoCompletePage.aspx 页面的片段:

foreach (DataRow dataRow in dataTable.Rows)
{
    string[] cells = new string[] { dataRow[0].ToString(), dataRow[1].ToString() };
    output.Add(cells);
}

稍后...

Response.Write(json.Serialize(output));

您可以在这张图片中看到 JSON 数据正在被返回,但我的文本框没有任何反应。预先感谢任何可以提供帮助的人。

自动完成结果

I know the question title seems like a duplicate, but I've been unable to find an answer to this question.

I'm using Jquery UI's autocomplete, and I can see the proper JSON data coming back in my debugger. However, nothing's coming back to the textbox.

My javascript:

<script type="text/javascript">
    $(document).ready(function () {
        myAutoComplete("#<%= myTxtBox.ClientID %>", "AutoCompletePage.aspx");
    });

    function myAutoComplete(ObjectId, DataURL) {
        $(ObjectId).autocomplete({
            source: function (request, response) {
                $.ajax({ url: DataURL, dataType: 'jsonp',
                    data: { q: request.term, limit: 10 },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item[1], value: item[0], id: item[0]}
                        }))
                    }
                })
            }
        });
    }

</script>

a snippet from my AutoCompletePage.aspx page:

foreach (DataRow dataRow in dataTable.Rows)
{
    string[] cells = new string[] { dataRow[0].ToString(), dataRow[1].ToString() };
    output.Add(cells);
}

And later...

Response.Write(json.Serialize(output));

You can see in this picture that JSON data is being returned, but nothing's happening to my textbox. Thanks in advance to anyone who can help.

autocomplete results

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

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

发布评论

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

评论(1

断爱 2024-12-03 10:28:15

我有预感你不应该在这里使用 jsonp 。 JSONP一般用于跨域请求。

看来您正在同一域中发出请求(此外,返回的数据可能没有回调函数可供调用),因此您只需使用普通的 json 就可以了。

尝试将 datatype 参数更改为 json

    $(ObjectId).autocomplete({
        source: function (request, response) {
            $.ajax({ url: DataURL, dataType: 'json',
                data: { q: request.term, limit: 10 },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item[1], value: item[0], id: item[0]}
                    }))
                }
            })
        }
    });

I have a hunch you should not be using jsonp here. JSONP is generally used for cross-domain requests.

It appears that you are making a request in the same domain (additionally, the data coming back may not have a callback function to call), so you should be fine just using normal json.

Try changing your datatype parameter to json:

    $(ObjectId).autocomplete({
        source: function (request, response) {
            $.ajax({ url: DataURL, dataType: 'json',
                data: { q: request.term, limit: 10 },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item[1], value: item[0], id: item[0]}
                    }))
                }
            })
        }
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文