微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery AJAX中的正斜杠“ /”问题

如何解决jQuery AJAX中的正斜杠“ /”问题

|| 我总是以这种方式编写AJAX调用使用的URL:
\"/Home/Save\"
,开头是正斜杠。现在,该最后一个项目正在部署到服务器上的虚拟目录中。因此,这些URL不再起作用,因为它们不是
\"example.com/VirtualDir/Home/Save\"
,而是指向
\"example.com/Home/Save\"
,这是错误的。我通过删除JavaScript中所有出现的URL中的第一个正斜杠“ 3”来快速解决了该问题。除一页外,所有页面都工作正常!在有问题的页面上发生AJAX调用时,指定的URL会附加到页面URL上。我昨天和今天整个早上已经花了几个小时,我无法弄清楚。与其他页面相比,此页面绝对没有什么不同。有人遇到过这个问题吗?我应该发布我的代码吗? 编辑:在键盘上敲了我的头又几个小时之后,我最终实现了以下内容。我在一个通用控制器中执行了一个操作,该操作返回了
Request.Url.GetLeftPart(UriPartial.Authority)
的结果,也就是您的
http://www.mysite.com
。我将其在“布局”页面内呈现为全局JavaScript变量
_AppPath
。然后,每个AJAX调用都会获得如下URL:
_AppPath + \'/Controller/Action\'
。这在任何地方都有效,但我仍然不知道该页面是什么问题。干杯!     

解决方法

您是否可以更改Ajax请求,使其指向\“ / VirtualDir / Home / Save \”? 如果对您的代码有帮助,则可以有一个
path
变量,以便在将虚拟目录路径部署到其他位置时可以轻松地更新(或删除)虚拟目录路径。或者您的代码可以通过
window.location.href
属性读取其位置,然后从那里计算出结果。 相对于当前文档的路径(即不带/斜杠前缀)并不是很有用,因为正如您所观察到的那样,当某些页面位于当前文档中的不同位置时,某些页面将失败其请求。网站层次结构。绝对网址就是您要使用的网址(即带有/斜杠前缀)。 [更新,根据以下评论] @Dimskiy,服务器端框架是.NET MVC或服务器上没有用于这些URL的实际文件夹并不重要。浏览器将仅根据其看到的URL结构进行响应。 因此,要查找的内容是浏览器地址栏中不同页面的URL,以及向服务器发出的Ajax请求的URL(例如,在Firebug的\“ Net \”面板中查找这些URL)。然后比较URL,查看每个URL建议的文件夹数量。 服务器上是否没有实际文件夹都没有关系。浏览器无法分辨,只能查看URL结构。如果JavaScript正在从名为“ foo”的页面调用位于“ Home / Save \”的Ajax资源,则请求将被路由到“ foo / Home / Save \”。如果请求是从页面“ foo / bar \”发出的,则它将被路由到“ foo / bar / Home / Save \”。那是相对路径-它是相对于包含HTML文档的路径。 对“绝对”路径的请求,例如“ / Home / Save \”(请注意/斜杠前缀),将始终转到域的根目录,例如example.com/Home/保存。但是,由于您需要进入\“ VirtualDir \”虚拟目录的请求,因此您的URL将变为\“ / VirtualDir / Home / Save \”。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。