【问题标题】:Specific $.ajax url relative paths work in FF & IE but not in Chrome特定的 $.ajax url 相对路径在 FF 和 IE 中有效,但在 Chrome 中无效
【发布时间】:2012-10-29 00:20:47
【问题描述】:

这很奇怪。我在下面有一个 jQuery $.ajax 调用。在 Firefox 中,只有当我取出 MyAppName 时它才会起作用。在 Chrome 中,只有当我在 url 中包含 MyAppName 时它才会起作用。不知道为什么

当我测试这个时,我正在浏览http://localhost/MyAppName

这适用于 FireFox 和 IE 9

$.ajax({
    url: '/MyAppName/Search/Member/260491',

这在 FireFox 或 IE 中不起作用:

  $.ajax({
    url: 'Search/Member/260491',

这适用于 Chrome

$.ajax({
    url: 'Search/Member/260491',

这在 Chrome 中不起作用:

  $.ajax({
    url: '/MyAppName/Search/Member/260491',

【问题讨论】:

  • 两者都应该适用于所有浏览器。问题出在其他地方。
  • 我第一次看到这个问题的时候正准备评论 Ctrl+F5 但显然你已经发现了缓存问题,哦,好吧。

标签: jquery .net ajax asp.net-mvc


【解决方案1】:

您可以在 if 语句中使用 jQuery 的 $.browser() 函数并以这种方式纠正问题。

http://api.jquery.com/jQuery.browser/

例子:

if ($.browser.chrome) {
    $.ajax({
        url: 'Search/Member/260491',
        ...
    })
}
else {
    $.ajax({
        url: '/MyAppName/Search/Member/260491',
        ...
    })
}

可用的标志是:

  • webkit(从 jQuery 1.4 开始)
  • Safari(已弃用)
  • 歌剧
  • msie
  • Mozilla

【讨论】:

    【解决方案2】:

    假设它是来自站点根目录的路径,如果您在其前面加上“/”前缀,则可能适用于所有浏览器。

    "/Search/Member/260491"

    【讨论】:

    • 试过了,当我尝试时在 FF 中不起作用......当我这样做时,我最终得到 localhost/Search/Member/260491 并且它完全切断了 MyAppName。
    • 控制台中是否有任何javascript异常?重新上一次编辑,您能否更改 IIS 设置,并将 Site/App Root 设置为“MyAppname/”?
    • 没关系,我认为这是 chrome 浏览器中的缓存问题,反之亦然......它工作正常。这是一个糟糕的帖子。
    • @CoffeeAddict 还不错,如果浏览器可能,仍然可以显示 jQuery 的示例
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多