我有一个web应用程序,前端是HTML &JavaScript/jQuery,后面是PHP。
它使用了丑陋的URL,如:host/app/Page.php?userid=1....丑!所以稍加MOD_REWRITE, url就会变成url/page/1/
RewriteRule ^page/([0-9]+)/?$ host/app/page.php?userid=$1 [NC,L]
接下来它本来做了简单的jQuery GET请求到PHP文件来获取动态数据。
var params = A JS function to get all paramters after the ? in URL
var userid = params.id;
$.getJSON('host/app/page_code.php',{'userid':userid}, function(data) {
var blah = data.blah;
});
现在,在使用MOD_REWRITE之后,我现在没有很好的方法来获取参数的前端,只有页面/1格式。但是,循环并在斜杠之间获取每个参数感觉不像是正确的方法。
所以我点击谷歌,似乎从MOD_REWRITE发送参数似乎是这样做的。所以我的问题是,这怎么可能,怎么做到的?
我如何从MOD_REWRITE URL获取参数,将这些参数发送到PHP后端,然后用JSON返回响应到前端?
编辑:我的问题是我需要从JS传递参数到PHP后端,然后得到响应。我最初用JS从URL获得这些参数,然后将它们传递到GET请求中,然后根据发送的参数从PHP获得响应。然而,现在我在URL上使用了mod_rewrite,我无法看到前端的参数以传统的?a=b&c=d格式捕获。为了在JS中获得这些,我只能通过循环并获得斜杠之间的每个参数来做到这一点。这样做似乎不对。我实际上需要一些如何获得参数的PHP代码在一个单独的页面从前端。然后将它与PHP代码的响应一起传递回前端,这样我就有了用户id。我不希望任何php在前端文件,以保持它都分开。必须有一种方法将参数从url获取到另一个文件中的PHP代码,然后用usersid将响应发送回前端HTML&JS。我是一个新的整个MOD_REWRITE干净的url,它是混乱的地狱我!
你可以用javascript编写一个反向路由器,在其中给定一个URL,它返回参数。
关于jsfiddle
的例子(非常糟糕的一个,只是给你一个想法)缺点:你必须将路由从.htacces
文件复制到Javascript。每次在这个文件中有一些变化,你也必须在Javascript中进行修改。
- 在PHP中完成所有的路由处理,甚至不使用
.htaccess
,然后以JSON格式检索路由数据。您可以通过Ajax请求 访问它。
的例子:
jQuery.ajax({
url: 'reverse_routing.php',
type: 'json',
data: {
url: window.location.pathname
},
function(params) {
// Do your stuff here...
}
});
标题>使用http://api.jquery.com/serialize/
jquery示例
$( "form" ).on( "submit", function( event ) {
event.preventDefault();
console.log( $(this).serialize() );
});
在PHP意义上传递数据的想法。
data = $( "form" ).serialize();
$.post("serverside.php", data, function(returnData)
{
$("divid").html(returndata)
}