我希望能够将jQuery $ .post与url段一起使用,如下所示:
www.mysite.com/stats/user1
www.mysite.com/stats
是着陆页,上面有此代码:
var user = //get user1 from the url;
$.post('stats.php', {username : user}, function(results){...});
用户名应该发布到PHP后端,然后进行一些数据库查询。
这可能吗?我或许可以使用.htaccess将用户从stats/user1
重定向到stats/
,但我在这方面没有太多经验。
非常感谢您的帮助。
修改
回应Loopo的回答:
我可以使用.htaccess
重写传入的URL,如下所示:
RewriteRule ^/stats/(.*)$ stats.php?username=$1 [L]
。
这样我就可以输入mysite.com/stats/user123
这样的网址,服务器会将其解释为mysite.com/stats?username=user123
在stats.php
我可以使用$user = $_GET['username']
吗?
答案 0 :(得分:1)
看来你正在混淆一些概念。
如果要将数据传递到网络服务器,可以通过两种方式完成; POST或GET。 (还有PUT和DELETE,但我们在这里忽略它。)
如果您使用GET请求,则数据位于URL中,通常采用
格式mysite.com/mypage.php?param1=value1¶m2=value2....
斜杠通常充当路径分隔符,告诉Web服务器在哪里查找响应请求的资源。
mysite.com/myapp/myfolder/resources/logo.png
会告诉服务器在哪里找到,然后将文件logo.png
发送给客户端。
如果要在路径中包含参数,还可以使用重定向(.htaccess)来获取虚拟资源。
如你的例子所示。
www.mysite.com/stats/user1
没有stats文件夹,每个用户都有一个脚本。
当有人要求提供类似的路径时,您必须告诉您的网络服务器
/stats/<something>
该请求应该由某些脚本提供(可能是&#39; stats.php&#39;),并且传递给脚本的参数将是<something>
可能如下:
RewriteRule ^/stats/(.*)$ stats.php/$1 [L]
在POST请求中,参数在网址中不可见。
所以你的stats.php必须在没有URL中的用户名的情况下被调用,而是在POST变量中,即在你的情况下POST到stats.php / user1然后在POST变量中再次包含用户名是多余的
因此,您的stats.php可以通过读取参数并使用POST参数中提供的值创建/更新新用户来处理POST请求,同时通过返回用户的统计信息来处理GET请求他们现在。