jQuery AJAX 请求中的相对与绝对 url

新手上路,请多包涵

我很难让我的 AJAX 请求在临时服务器上工作。在我的开发机器上一切正常,但是一旦我上传它,我所有的 AJAX 请求都停止工作了。我发现,如果我将相对 url(例如“index.php”)更改为绝对 url(“ http://example.com/index.php ”),请求会再次起作用,但我不明白为什么。

示例请求:

 jQuery.post('index.php', {id: 1234, action: 1, step: 1}, function(data) { /* something */ });

这不起作用,我什至没有出现在萤火虫控制台中。虽然调用了成功处理程序,这非常令人困惑。

这工作得很好:

 jQuery.post('http://example.com/index.php', {id: 1234, action: 1, step: 1}, function(data) { /* something */ });

任何人都可以解释为什么 AJAX 请求会以这种方式运行吗? x_X

原文由 fresskoma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 584
2 个回答

尝试在第一个示例中在 / index.php 以强制它从根目录查看。仔细检查以确保您的目录结构与 index.php 的位置 _完全相同_。

原文由 Sampson 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果您使用 URL 路由,例如在 MVC 框架中,它将始终与执行所经过的页面相关,这不一定与地址栏中的 URL 匹配。

考虑以下文件结构:

 mysite/index.php
mysite/resources/javascript/my_javascript.js
mysite/resources/css/my_css.css

通常,MVC 框架通过单个文件路由所有页面请求,例如 index.php ( http://www.mysite.com/index.php )。这使得使用相对 url 变得容易,因为资源和脚本将始终位于相同的相对路径中。 Javascript 将始终位于 /resources/javascript/ CSS 将始终位于 /resources/css/

无论浏览器地址栏中有什么。它可能是:

 http://www.mysite.com/index/
http://www.mysite.com/kittens/
http://www.mysite.com/kittens/cute/
http://www.mysite.com/kittens/fluffy/
etc..

原文由 dalemac 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏