【问题标题】:I can´t get Javascript code runs我无法运行 Javascript 代码
【发布时间】:2015-12-21 15:27:44
【问题描述】:

编辑问题在底部!!

我想让我的自动完成功能工作,我总是得到这个:

无法修改 Controls 集合,因为该控件包含代码块(即 )。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

我的脚本和 html 代码:

<head runat="server">
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <title><%--<%= Page.Title %> --%>- Ticketsystem</title>
  <link href="~/Content/master.css" rel="stylesheet" type="text/css" />
  <asp:PlaceHolder runat="server">
    <%: Scripts.Render( "~/bundles/modernizr") %>
  </asp:PlaceHolder>

  <webopt:bundlereference runat="server" path="~/Content/css" />
  <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />



   <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.js"></script>


<script type="text/javascript" lang="ja">
    $(function ()
    {
       $('#tbCompany').autocomplete(
           {
               source: function (request, response)
               {
               $.ajax({
                   url: "Autocomlete.asmx/GetCompanyNames",
                   data: "{ 'searchTerm': '" + request.term + "' }",
                   type: "POST",
                   dataType: "json",
                   contentType: "application/json;charset=utf-8",
                   success: function (result) {
                       response(result.d);
                   },
                   error: function (result) {
                       alert('There is a problem processing your request');
                   }
               });
           },
           minLength: 0
       });
   });
</script>
</asp:PlaceHolder>

  
</head>

<body>
  <form runat="server">
<asp:TextBox ID="tbCompany" runat="server" Style="margin-top:10px" ClientIDMode="static"></asp:TextBox>

我不知道我的脚本是错误的还是缺少某些东西。我试着把它放在我页面的末尾,放在一个 div 或占位符中,就像其他问题所建议的那样。

编辑:现在我几乎按照您的建议做了所有事情,现在看起来像上面和下面的错误。

错误:

未捕获的类型错误:$(...).autocomplete 不是函数

【问题讨论】:

  • 您是否尝试将&lt;%: 更改为&lt;%=
  • 你是用模板系统还是jsp来渲染html? &lt;%: Page.Title %&gt; 不是 html 的标准标签,因此您应该在帖子中编辑并指定它。我认为您需要注意#&lt;%=tbCompany.ClientID%&gt; 将如何在最终的 html 中呈现并替换该标签中呈现的这个选择器
  • 您使用的是asp.net mvc 还是传统的.net?将&lt;%: Page.Title %&gt; 更改为&lt;%= Page.Title %&gt;
  • 它是一个 asp.net 网页,所以我唯一做的就是添加我的脚本,这意味着 已经存在,我不明白你的意思 sry
  • 我用我得到的错误编辑了我的问题

标签: javascript c# jquery html asp.net


【解决方案1】:

正如您在此处看到的:https://support.microsoft.com/en-us/kb/976112 内联表达式 &lt;%: 不存在。

尝试将&lt;%: ... %&gt; 更改为&lt;%= ... %&gt;

您还加载了 jquery 两次。您的 jquery UI 版本是 1.10.3,但您正在加载版本 jquery-1.9.1.js

尝试加载这些版本:

<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.11.4/themes/ui-lightness/jquery-ui.css">

【讨论】:

  • 改变它没有做任何事情:/
  • no sry 仍然是同样的错误,自动完成不是功能
  • 抱歉,链接错误。我已经对这些进行了测试,并且可以正常工作。
  • 把它们放进去还是不行我在上面编辑了我的代码
【解决方案2】:

您需要将脚本放在占位符标记内。

 <asp:PlaceHolder runat="server">
<script type="text/javascript" lang="ja">
    $(function() {
      $("#<%=tbCompany.ClientID%>").autocomplete({
        source: function(request, response) {
          $.ajax({
            url: "Autocomlete.asmx/GetCompanyNames",
            data: "{ 'searchTerm': '" + request.term + "' }",
            type: "POST",
            dataType: "json",
            contentType: "application/json;charset=utf-8",
            success: function(result) {
              response(result.d);
            },
            error: function(result) {
              alert('There is a problem processing your request');
            }
          });
        },
        minLength: 0
      });
    });
  </script>
</asp:PlaceHolder>

编辑:似乎最新的错误是因为缺少 jQuery UI js 或不正确的序列。你能删除所有与 jQuery 相关的 js 文件,然后在你的代码中添加最新版本的 jQuery 吗?

【讨论】:

  • 好吧,我至少没有收到任何错误,但它不起作用。你能告诉我它是否正确吗?
  • 您是否尝试在 GetCompanyNames 中放置断点?打到了吗?另外,使用调试器检查控件是进入成功函数还是错误函数
  • 似乎最新的错误是因为缺少 jQuery UI js 或不正确的顺序。你能删除所有与 jQuery 相关的 js 文件并在你的代码中添加最新版本的 jQuery 吗?
  • 谢谢,但已经这样做了,你是对的,我没有看到一个脚本参考
【解决方案3】:

似乎头部添加了太多的jQuery文件,尝试只使用一个jquery可能会解决这个问题

您只能使用最新版本的缩小文件。

【讨论】:

  • 改变它没有做任何事情:/ 现在我只有 10.2.min.js、10.2.js 和 10.2.intellisense.js
  • 仅使用 10.2.min.js 删除 10.2.js
【解决方案4】:

您是否正在加载 Jquery-ui.{version}.js,因为我在您的代码中看不到它是因为自动完成错误。

如果您在单独的 js 文件中编写代码,则 将不起作用,取而代之的是,您可以将 ClientIDMode 用作静态,而您可以使用 aspx 语法来代替

$("#tbCompany")

希望它会起作用。

【讨论】:

    【解决方案5】:

    尝试&lt;%# tbCompany.ClientID %&gt; 而不是&lt;%=tbCompany.ClientID%&gt;

    <script type="text/javascript" lang="ja">
        $(function() {
          $("#<%# tbCompany.ClientID %>").autocomplete({
            source: function(request, response) {
              $.ajax({
                url: "Autocomlete.asmx/GetCompanyNames",
                data: "{ 'searchTerm': '" + request.term + "' }",
                type: "POST",
                dataType: "json",
                contentType: "application/json;charset=utf-8",
                success: function(result) {
                  response(result.d);
                },
                error: function(result) {
                  alert('There is a problem processing your request');
                }
              });
            },
            minLength: 0
          });
        });
      </script>
    

    【讨论】:

      【解决方案6】:

      你介意尝试分开 "#" 使用变量?作为: 和 :$("#value").... 可能“自动完成”不是重点。

      【讨论】:

        【解决方案7】:

        在 cmets 中,您使用的是 .net 4.5。

        .net 4 用它购买了一些对 asp.net 控件的更改。尤其是一个名为ClientIDMode的属性

        这允许您控制 ASP.Net 如何呈现和重命名控件的 ID。你现在可以告诉 .net 不要管它们了..

        你可以改变这个:

        $('#&lt;%=tbCompany.ClientID%&gt;').autocomplete({...

        到这里:

        $('#tbCompany').autocomplete({...

        并且在 ID 为 tbCompany 的元素上添加属性 ClientIDMode="static" - 这将告诉 .net 不理会 ID 并使用您设置的任何内容。

        查看更多关于ClientIDMode here

        【讨论】:

        • 如果是这种情况,那么页面中还有其他 。如果您更改了 $('#tbCompany') 并将 ClientIDMode 添加到正确的元素,那么您 100% 有其他内联代码
        • 编辑了上面的代码,我没有检查另一个内联代码
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        • 2019-07-20
        相关资源
        最近更新 更多