0x800a138f - JavaScript运行时错误: 属性'$'的值为null或未定义,不是函数对象。

4

当我启动我的项目并加载我的页面时,出现以下错误:

0x800a138f - JavaScript运行时错误:属性'$'的值为null或未定义,不是函数对象。


请注意,这是一条错误信息,而不是解释或建议。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestPage.aspx.cs" Inherits="WebsiteTest.TestPage" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Web Service Test</title>
    <script src="http://ajax.microsoft.com/ajax/jQuery/jquery-2.1.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $('#tbDetails').hide();
            $('#btnClick').click(function () {
                alert('test');
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <input type="button" id="btnClick" value="Get Data" />
        <table id="tbDetails">
            <thead style="background-color: #DC5807; color: White; font-weight: bold">
                <tr style="border: solid 1px #000000">
                   <td>Description</td>
                   <td>Comments</td>
                </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
    </form>
</body>
</html>

我猜是因为 JQuery 没有被包含,尽管应该是包含在内的。你有什么想法吗?谢谢。
更新:使用时可以正常工作。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

我会继续研究为什么它不能与 MS 版本一起使用!它肯定存在,因为我可以下载它!

更新

我找出了两个问题:

  1. 我在本地主机上使用 https,但应该使用 jQuery 的 https。更改后,我消除了最初的错误,但是我遇到了其他错误,我仍在研究。

  2. 我的代码完美运行(并且更好,因为我打开了这个线程),因为现在我还调用了一个 REST web 服务并操作返回的数据,而没有任何错误,但是这只适用于 Chrome 和 Firefox!IE11 怎么回事?


@celeriko,代码已经包含在一个就绪处理程序中了! - Pointy
@Pointy 你是什么意思? - Thierry
他(celeriko)正在谈论内联脚本块中代码周围的$( ... )包装器。 $(function() { ... })与(现已删除的)评论中建议的完全相同。 - Pointy
你可以使用浏览器的“网络”调试控制台来查看获取jQuery的HTTP请求是否正常工作。我不知道为什么它不起作用;那个URL是正确的。我建议尝试删除所有<script>标签上的“type”属性,但即使在这里,它们看起来也很好。 - Pointy
这太疯狂了!它就是不工作!一旦我更改src以使用谷歌的,它就可以工作了!我会继续研究它,但这真是浪费时间! - Thierry
显示剩余2条评论
4个回答

2

从src中删除协议,浏览器将使用您的页面所用的任何协议。这里有一个例子

<script src="//ajax.microsoft.com/ajax/jQuery/jquery-2.1.1.js" type="text/javascript"></script>

1
在头部添加此元标记。我遇到了同样的问题,通过这种方法解决了它。
<meta http-equiv="X-UA-Compatible" content="IE=edge;" />

0

我找不到解决这个非常烦人的问题的答案,所以我添加了我的解决方案(可能不是唯一的,但是就是这样)。

如果您的物理文件夹路径包含下划线,则无法加载jQuery。因此,如果您将网站放在 C:\MyRoot\MyFolder_2\WebSite1\ 这个位置,它将无法工作。但是,如果您删除下划线并将其变为 C:\MyRoot\MyFolder2\WebSite1\,它将起作用,并且jQuery将突然被加载。jQuery已加载=没有更多错误。

希望这可以帮助到您。


0

我没有。我正在按照我在网上找到的一个示例,并下载了该项目,但它没有使用任何ClientScriptManager.RegisterClientScriptBlock。我还没有尝试运行他们的项目,但看起来非常简单!奇怪的是,我有其他两个测试项目,都没有问题地接受JQuery,但它们位于不同的机器上。我仍在努力寻找两者之间的区别,但是一直没有成功。 - Thierry
我发现它在浏览器层面上无法正常工作。尝试强制使用“edge”标准。这在许多情况下都是我的解决方案。 - Darj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接