【问题标题】:JQuery object expected error when accessing page via url routing通过 url 路由访问页面时 JQuery 对象预期错误
【发布时间】:2010-05-29 16:25:52
【问题描述】:

在我的 global.asax 中,我的 url 路由设置如下:

routes.MapPageRoute("User Logon", "{Vendor}/Logon", "~/Logon.aspx");

在 logon.aspx 页面中,我有一个“风格化”登录按钮的脚本:

<link href="jquery/css/flick/jquery-ui-1.8.1.custom.css" rel="stylesheet" type="text/css" />
<link href="images/style.css" rel="stylesheet" type="text/css" />
<script src="jquery/js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="jquery/js/jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#<%= ButtonLogon.ClientID %>').button();
    });
</script>

当我访问页面时,我们使用 url(在调试模式下)http://localhost/logon.aspx?v=1 页面正确加载并且 jquery 按钮命令正确加载。但是后来我使用新的 url 路由访问该页面,我得到了这个错误。

Microsoft JScript 运行时错误:需要对象

有人知道为什么会这样吗?

谢谢。

【问题讨论】:

    标签: asp.net javascript jquery jquery-plugins url-routing


    【解决方案1】:

    这是因为您的 HTML 中的相对路径。

    当您以http://your.domain/Logon.aspx 访问您的页面时,相对 URL jquery/js/jquery-1.4.2.min.js 会解析为 http://your.domain/jquery/js/jquery-1.4.2.min.js 并正确加载。

    但是当您以http://your.domain/xxx/Logon.aspx 访问它时,该URL 将解析为http://your.domain/xxx/jquery/js/jquery-1.4.2.min.js,并且由于您的服务器上确实没有名为xxx 的文件夹,因此服务器返回404 并且脚本无法加载。因此,当您随后尝试访问该脚本中定义的函数和变量时,会出现错误。

    要解决此问题,您应该使用绝对路径 - 即 /jquery/js/jquery-1.4.2.min.js(注意前导斜杠),或使用 ResolveUrl(或 Url.Content)方法正确映射 URL - 即 &lt;%= Url.Content( "~/jquery/js/jquery-1.4.2.min.js" ) %&gt;

    后一种选择更可取,因为它不依赖于托管在域根目录中的应用程序。

    【讨论】:

    • 知道了。就是这样。谢谢!
    • 如果我的回答对你有帮助,你会考虑接受吗? (只需单击左侧的空心复选标记)
    • @Kasper Skov:使用Url.ContentResolveUrl 方法。
    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 2017-09-23
    • 2021-01-09
    • 2017-02-02
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多