Net母版页和子页都需要引用jQuery库

Net母版页和子页都需要引用jQuery库,jquery,asp.net,master-pages,Jquery,Asp.net,Master Pages,也许有人可以帮助我理解jQuery与ASP.Net交互的方式 在我的站点母版页中,我包括了对jQuery库的引用以及以下其他引用: <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> <script src="/js/ui/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>

也许有人可以帮助我理解jQuery与ASP.Net交互的方式

在我的站点母版页中,我包括了对jQuery库的引用以及以下其他引用:

    <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>    <script src="/js/ui/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>    <script  src="/js/jquery.autocomplete.js" type="text/javascript"></script>    <script src="/js/liquidmetal.js" type="text/javascript"></script>    <script src="/js/jquery.flexselect.js" type="text/javascript"></script>

我假设通过这样做,jQuery库现在将对所有其他使用站点母版作为其母版页的ASP.Net页面是“全局”的

在特定的子页面中,我使用了其他jQuery插件,例如:

为我的数据库应用程序实现搜索功能

在我的搜索页面中,我包含了一个$document.ready函数,可以像以前一样为各种UI元素实现单击和更改处理程序。但是,这些行为并没有按照预期的那样进行,因此使用Firebug尝试了解子页面中出现了什么问题,结果发现出现了以下异常:

ReferenceError:未定义jQuery [在此错误上中断]

$(文档).ready(函数(){

当我先引用jQuery库,然后再引用所有其他插件等时,我的页面开始按预期运行,Firebug没有报告任何问题

有人能给我解释一下为什么在我的网站母版和使用jQuery库的页面中都需要jQuery库的引用吗

我是jQuery和ASP.Net的新手

母版页代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<title>Untitled Page</title>
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
<link rel="stylesheet" href="/css/ui-lightness/jquery-ui-1.7.2.custom.css" type="text/css" />    
<link rel="stylesheet" href="/css/main.css" type="text/css" media="screen, projection" />  
<link rel="stylesheet" href="/css/print.css" type="text/css" media="print" />
<link rel="stylesheet" href="/css/jquery.tooltip.css" type="text/css" />
<link rel="stylesheet" href="/css/menubar.css" type="text/css" media="screen, projection" />
<link rel="stylesheet" href="/css/tipsy.css" type="text/css" media="screen, projection" />

无标题页

确保在母版页中的内容占位符之前引用了jquery库

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

<asp:ContentPlaceHolder ID="head" runat="server">

</asp:ContentPlaceHolder>

这不应该发生在

Javascript都是在客户端执行的,母版页和子版页都是在服务器端组装的(没有执行Javascript或任何东西)只有当您查看页面时,服务器才会将所有母版/子版放在一起,并将完成的HTML发送到浏览器,然后浏览器才会开始执行Javascript。因此,它肯定不会同时放在子版和母版中

从没有任何额外信息的错误判断,我能想到的唯一一件事是,您可能不会将Jquery放在主页的头部,而是放在母版页的底部(因此,当从上到下读取HTML时,浏览器首先会遇到对Jquery的调用(在子页代码中)没有加载脚本,因为这是waaaay的结尾。)


当将代码也放在子页面中时,它在HTML中的位置就足够高,当调用JQuery时它就可用了…

应该发生的是,没有加载JQuery的内容页面与其他内容页面位于不同的文件夹中,也就是说,您的问题是对文件夹的引用r包含您的jquery文件。为避免此类问题,可以将jquery引用放在web上而不是本地文件系统(服务器)中的存储库中。您应该这样放置引用:

<head id="Head1" runat="server">
    <title>Some page</title>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" language="javascript" type="text/javascript"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" language="javascript" type="text/javascript"></script>
    <link href="~/Scripts/css/smoothness/jquery-ui-1.10.0.custom.min.css" rel="stylesheet"
        type="text/css" runat="server" />

    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

某页

请注意引用jQueryUI样式表的runat=“server”标记。此属性允许asp.net处理标记并将相对路径放入样式表,而不管内容页的嵌套级别如何。

Vicente是否正确,请使用tilde前缀表示路径相对于路由

但如果仍然出现错误,请使用google cdn方法将本地副本作为备份,例如:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined')
{
    document.write(unescape("%3Cscript src='~/js/jquery-1.3.2.min.js' type='text/javascript'%3E%3C/script%3E"));
   }
  </script>

if(typeof jQuery==“未定义”)
{
write(unescape(“%3Cscript src=”~/js/jquery-1.3.2.min.js”type='text/javascript'%3E%3C/script%3E”);
}

My master page(我作为新手继承了它作为一个例子)是一个标准HTML页面的混合体,带有标题和主要内容的占位符:我移动了对标记的引用,但这并没有解决问题!好的,所以我将jQuery include移动到标记之前,并从子页面中删除了对它的引用。返回到引用错误问题:未定义jQuery[在此错误上中断]$(文档).ready(函数(){母版页现在是:
顺便说一句,writeToBhuwan,Richard A.和Cerly Wiltink请耐心听我说,因为我还在琢磨如何成为一个“好”的人堆栈上的用户溢出!您的HEAD标记中没有脚本,但位于和之间的外部…您的HTML看起来格式不正确…应该是这样的:…src属性正确,jQuery库为“other”正确加载使用同一母版的子页,但不是我遇到问题的子页!Vincente是对的,而jQuery库脚本相对于内容页的位置是一个问题。
。引用是相对于母版页的位置的,所以吸取了教训。公平地说,Ceryl做到了在早些时候的评论中提到这一点。感谢所有回复的人,因为你们给了我一些宝贵的见解。谢谢大家。