所以今天我一直在用backbone.js
摆弄,并且正在思考如何让我的PHP代码处理如下所示的AJAX请求:
$.ajax({
url : "server.php/123",
data : "empty string",
type : "POST" // or "GET" - interested in both
});
只是搞乱,我发现如果上面的URL被发送,那么“server.php”仍然会收到请求。我很惊讶地看到这一点,因为我预计需要做某种mod_rewrite
废话以使其发挥作用。
基于这一发现,我有几个问题:
server.php
中访问“/”之后发送的信息而不执行mod_rewrite的东西(例如,通过调用“server.php / 123”我想访问“ 123“来自server.php)。我意识到,在骨干的情况下,它将信息作为JSON的一部分发送,所以这只是我试图了解PHP如何工作。答案 0 :(得分:1)
是的,这很常见,是的,你可以访问它:
$url_parts = explode('/', $_SERVER['REQUEST_URI']);
print_r($url_parts);
答案 1 :(得分:1)
感谢响应者。为了提供全面的答案,我们可以说这是您的电话:
$.ajax({
url : "/server.php/123/456",
data : "some string",
type : "GET"
});
以下是各种$_SERVER
vars的结果:
$_SERVER['PHP_SELF'] = "/server.php/123/456"
$_SERVER['PATH_INFO'] = "/123/456"
$_SERVER['REQUEST_URI'] = "/server.php/123/456?data=some+string"
$_SERVER['QUERY_STRING'] = "data=some+string"
或者,如果您这样做:
$.ajax({
url : "/server.php/123/456",
data : "some string",
type : "POST"
});
然后返回的值是相同的,除了“?data = some + string”不在$_SERVER['REQUEST_URI']
且$_SERVER['QUERY_STRING']
为空,所以没有惊喜。
因此,正如@Yoshi建议的那样,获胜者似乎是$_SERVER['PATH_INFO']
。实际上,这也不应该令人惊讶,因为我似乎在$_SERVER['QUERY_STRING']
{{1}}上错过了这一点:
“包含任何客户提供的跟踪实际的路径名信息 脚本文件名,但在查询字符串之前,如果可用。对于 例如,如果通过URL访问当前脚本 那么PHP documentation $ _SERVER ['PATH_INFO']将包含/ some / stuff。“