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
如果您正在使用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)