使用URL段作为jQuery $ .post变量

时间:2014-07-26 11:19:51

标签: php jquery post url-rewriting

我希望能够将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']吗?

1 个答案:

答案 0 :(得分:1)

看来你正在混淆一些概念。

如果要将数据传递到网络服务器,可以通过两种方式完成; POST或GET。 (还有PUT和DELETE,但我们在这里忽略它。)

如果您使用GET请求,则数据位于URL中,通常采用

格式
mysite.com/mypage.php?param1=value1&param2=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>

你的.htaccess中的

可能如下:

 RewriteRule ^/stats/(.*)$ stats.php/$1 [L]

在POST请求中,参数在网址中不可见。

所以你的stats.php必须在没有URL中的用户名的情况下被调用,而是在POST变量中,即在你的情况下POST到stats.php / user1然后在POST变量中再次包含用户名是多余的

因此,您的stats.php可以通过读取参数并使用POST参数中提供的值创建/更新新用户来处理POST请求,同时通过返回用户的统计信息来处理GET请求他们现在。

我所描述的是REST,请参阅also