【问题标题】:ASP.Net, incorporating autocompleteASP.Net,包含自动完成功能
【发布时间】:2016-05-16 01:47:06
【问题描述】:

这是我的第一个 ASP.Net 应用程序,请多多包涵。我正在尝试在文本框中加入自动完成功能。目前,我有一个名为 ChampNameService.asmx 的 WebService 设置,它根据用户输入的内容从数据库返回一个字符串。

当我测试服务时,它似乎工作正常:

aspx 文件如下所示:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <form id="form1" runat="server">

    <ul>
        <li><a href="Webpages/Data/Champdata.aspx">Home</a></li>
    </ul>

        <link href="Styles/jquery-ui.min.css" rel="stylesheet" type="text/css" />
        <script src="Scripts/jquery-ui.min.js" type="text/javascript"> </script>
        <script src="Scripts/jquery-ui.js" type="text/javascript"></script>
        <script type="text/javascript"> 
                 $(function () {
        $('#<%= TextBox1.ClientID %>').autocomplete({
            source: function (request, response) {
                $.ajax(
                 {
                    url: "ChampNameService.asmx/GetChampionNames",
                    data: "{ 'Champname': '" + request.term + "' }",
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json;charset=utf-8",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert('There is a problem processing your request');
                    }
                });
            },
            minLength: 0
        });
            });

        </script>


<p>What champion are you playing? </p>
    <asp:TextBox ID="TextBox1" runat="server" CausesValidation="True"></asp:TextBox>

    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
    <asp:GridView ID="gvChamps" runat="server"></asp:GridView>


    <p>&nbsp;</p>
    <p>&nbsp;</p>
    </form>

这是我遇到问题的部分:

            <link href="Styles/jquery-ui.min.css" rel="stylesheet" type="text/css" />
        <script src="Scripts/jquery-ui.min.js" type="text/javascript"> </script>
        <script src="Scripts/jquery-ui.js" type="text/javascript"></script>
        <script type="text/javascript"> 
                 $(function () {
        $('#<%= TextBox1.ClientID %>').autocomplete({
            source: function (request, response) {
                $.ajax(
                 {
                    url: "ChampNameService.asmx/GetChampionNames",
                    data: "{ 'Champname': '" + request.term + "' }",
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json;charset=utf-8",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert('There is a problem processing your request');
                    }
                });
            },
            minLength: 0
        });
            });

        </script>

我也是 Javascript 新手,但我下载并导入了正确的文件并修改了 javascript 以反映我自己的代码。我期望发生的是,当用户输入一个字符的名称时,它将使用从 Web 服务收到的结果自动完成它。目前似乎没有这样做。我在一周内尝试了多种方法,如果有人能指出我正确的方向,那就太好了。

编辑:问题可能是我的 web 服务中 String 的返回值与 ajax/javascript 中预期的 Json 的区别?

【问题讨论】:

  • 您的浏览器网络跟踪/脚本调试窗口说什么?另外:您的网络服务实际上是返回 XML,而不是像您的 .autocomplete 处理程序所期望的 JSON。这行不通。将您的 Web 服务转换为 HttpHandler(可以返回任何内容,包括 JSON)或 WebAPI 控制器(默认返回 JSON)。
  • 我认为这是一个问题,但我不确定。我最终使用了 Ajax Control Toolkit,这对我来说效果很好。但是,我很好奇;如何将我的 web 服务转换为 HTTPHandler/WebAPI 控制器?这两个东西是什么,我该如何使用它们?我相信 HTTPhandler 会处理来自浏览器的请求?
  • Google 是您的朋友。这很容易 - try this guide on MSDN。 AJAX Control Toolkit / UpdatePanel 使用起来非常简单,但与 jQuery AJAX 相比,在带宽等方面效率非常低。

标签: javascript asp.net ajax web-services webforms


【解决方案1】:

这是 Web 开发中的常见要求,Dev Express 提供了一些控件来简化流程。使用AjaxControlToolkit。而且,here 是一个如何使用它的示例。

【讨论】:

  • 花了一段时间,但在摆弄它之后,我让它工作了!谢谢!
  • 太好了。如果它帮助您解决问题,请接受答案。干杯!
猜你喜欢
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 2022-08-15
  • 2011-08-05
相关资源
最近更新 更多