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

fre*_*oma 23 javascript php ajax jquery

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

示例请求:

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

这不起作用,我甚至没有出现在firebug控制台中.虽然调用了成功处理程序,但这非常令人困惑.

这很好用:

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

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

Sam*_*son 41

尝试在第一个示例中添加/before index.php,以强制它从root查找.仔细检查以确保您的目录结构与where 位置完全相同index.php.


dal*_*mac 5

如果您正在使用URL路由,例如在MVC框架中,它将始终相对于执行所运行的页面,该页面不一定与地址栏中的URL匹配.

请考虑以下文件结构:

mysite/index.php
mysite/resources/javascript/my_javascript.js
mysite/resources/css/my_css.css
Run Code Online (Sandbox Code Playgroud)

通常,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..
Run Code Online (Sandbox Code Playgroud)