0

我有一个 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]  

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

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 代码,然后使用用户 ID 将响应发送回前端 HTML&JS。对于干净的网址,我对整个 MOD_REWRITE 很陌生,这让我很困惑!

4

2 回答 2

0

使用带有http://api.jquery.com/serialize/的 post 方法

来自 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)
}
于 2013-05-16T16:41:48.460 回答
0

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

jsfiddle上的示例(真的很糟糕,只是给你一个想法)

缺点:您必须将路由从.htacces文件复制到 Javascript。每次在该文件中发生更改时,您也必须更改 Javascript。

编辑:

另一种方法

  • 在 PHP 中进行所有路由处理,甚至不使用.htaccessJSON 格式的路由然后检索数据。您可以从 Ajax 请求中访问它

例子:

jQuery.ajax({
    url: 'reverse_routing.php', 
    type: 'json', 
    data: {
        url: window.location.pathname 
    }, 
    function(params) {  
       // Do your stuff here...
    }
});
于 2013-05-16T17:24:18.997 回答