首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数从Mod_rewrite传递到PHP,前端只由HTML和JS组成。

问将参数从Mod_rewrite传递到PHP,前端只由HTML和JS组成。
EN

Stack Overflow用户
提问于 2013-05-17 00:36:35
回答 2查看 286关注 0票数 0

我有一个web应用程序,前端是HTML & JavaScript/jQuery,后端是PHP。

它使用的URL很难看,比如host/app/page.php?userid=1……丑陋!因此,使用一个小页面,它现在将提供url为url/ MOD_REWRITE /1/

代码语言:javascript
复制
RewriteRule    ^page/([0-9]+)/?$    host/app/page.php?userid=$1    [NC,L]  

接下来,它最初对jQuery文件执行简单的PHP请求以获取动态数据。

代码语言:javascript
复制
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之后,我现在没有很好的方法来获取参数的前端,只能以page/1格式。然而,循环并将每个参数放在斜杠之间并不像是正确的做法。

所以我点击了谷歌,似乎从MOD_REWRITE发送参数似乎是一种方法。所以我的问题是,这是怎么可能的,它是如何做到的?

如何使用MOD_REWRITE从URL中获取参数,将这些参数发送到PHP后端,然后使用JSON向前端返回响应?

编辑:我遇到的问题是,我需要将参数从JS传递到PHP后端,然后获得响应。我最初使用JS从URL获取这些参数,然后将它们传递到GET请求中,然后根据发送的参数从PHP获得响应。但是,现在我已经在URL上使用了mod_rewrite,我看不到前端的参数,无法用传统的?a=b&c=d格式捕获。现在看起来像/b/d,要在JS中获取这些参数,我只能通过循环遍历和获取斜杠之间的每个参数来实现。这样做似乎不太对。我需要实际的一些如何获得参数的PHP代码在一个单独的页面从前端。然后将其与PHP代码的响应一起传递回前端,因此我假设用户id。我不希望在前端文件中有任何php,因为这会让它完全分离。必须有一种方法来获得参数从url到PHP代码在一个不同的文件,然后发送一个响应到前端HTML&JS与usersid。我是第一次接触干净的urls的整个MOD_REWRITE,这让我很困惑!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-17 01:24:19

您可以使用javascript编写一个反向路由器,在该脚本中,给定一个URL,它将返回参数。

示例(非常糟糕的一个,只是为了给您一个概念) on jsfiddle

缺点:您必须将路由从.htacces文件复制到Javascript。每当该文件中的某些内容发生更改时,您也必须在Javascript中进行更改。

编辑:

另一种方法

PHP

  • 完成所有的路由处理,甚至不使用.htaccess,然后以格式检索路由数据。您可以从Ajax请求访问它

示例:

代码语言:javascript
复制
jQuery.ajax({
    url: 'reverse_routing.php', 
    type: 'json', 
    data: {
        url: window.location.pathname 
    }, 
    function(params) {  
       // Do your stuff here...
    }
});
票数 0
EN

Stack Overflow用户

发布于 2013-05-17 00:41:48

对http://api.jquery.com/serialize/使用post方法

jquery中的示例。

代码语言:javascript
复制
$( "form" ).on( "submit", function( event ) {
  event.preventDefault();
  console.log( $(this).serialize() );
});

一个在PHP意义上传递数据的想法。

代码语言:javascript
复制
data = $( "form" ).serialize();
$.post("serverside.php", data, function(returnData)
{
    $("divid").html(returndata)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16592947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档