在 PHP 表单中使用 $_GET 方法而不更改 url?

ZZP*_*LKF 1 php get url-rewriting

http://example.com/bills.php?sort=highest 
http://example.com/bills.php?sort=alpha
http://example.com/bills.php?sort=lowest
Run Code Online (Sandbox Code Playgroud)

所以上面的 url 按最高、字母和最低排序。他们通过表单使用 $_GET 方法。我想知道是否有一种方法可以在不更改 url 的情况下提交表单/获取 $_GET 数据?

<form action="bills.php" method="get">
    <select onchange="this.form.submit();" name="sort" class="right sort">
        <option>What would you like to sort by?</option>
        <option value="highest" <?php if(isset($_GET['sort']) && $_GET['sort'] == 'highest'){?> selected="selected" <?php } ?>>Highest to Lowest</option>
        <option value="lowest" <?php if(isset($_GET['sort'])&& $_GET['sort'] == 'lowest'){?> selected="selected" <?php } ?>>Lowest to Highest</option>
        <option value="alpha" <?php if(isset($_GET['sort'])&& $_GET['sort'] == 'alpha'){?> selected="selected" <?php } ?>>Alphabetically</option>
    </select> 
</form>
Run Code Online (Sandbox Code Playgroud)

上面是我能够提交新排序请求的代码。

我想让我的网址保留在example.com/bills.php可以吗?

是否可以使用 .htaccess 重写 url?我尝试过一种 URL 重写方法,它允许我访问http://example.com/bills/alpha并且工作正常,但是当我选择一个新查询时,它会变成http://example.com/bills/bills/?sort=alpha.

这是我的 .htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^bills/(.*)$ /bills.php?id=$1
Run Code Online (Sandbox Code Playgroud)

Nei*_*eil 5

使用AJAX,就可以解决这个问题。无需对 .htaccess 进行任何更改。这是可以帮助您的代码:

 $(".right").change(function(){
    $.get("YourFile.php",{"sort":$(this).val()},function(res){
       alert(res);
   });
}); 
Run Code Online (Sandbox Code Playgroud)