页面加载后获取 URL 参数

Get URL paramater after page load

我在加载我的 index.php 页面后使用 jquery 加载一个 script.php 文件,我希望能够在我的 script.php 文件,但它不起作用,因为页面已经加载,它告诉我

Undefined array key "query"

index.php :

 <div id="loader">
    $(window).on('load', function () {
        $('#loader').load('scripts.php');
    })

scripts.php :

    $current_url = $_SERVER['REQUEST_URI'];
    $parts = parse_url($current_url);
    parse_str($parts['query'], $query);
    $parameter = $query['q'];

URL 示例: https://example.com/search?q=test

有什么方法可以在加载页面后取回我的参数吗?

提前致谢

发往 scripts.php 的 HTTP 请求与 returns [=18] 发给 URL 的 不同 HTTP 请求=] 文档。它有不同的 URL.

如果你想从后者复制查询字符串,那么你需要明确地这样做。

const q = new URLSearchParams(location.search);
const url = new URL("search.php", location);
[...q.entries()].forEach(
    ([key, value]) => url.searchParams.append(key, value)
);
$('#loader').load(url.toString());

您可以将任意查询字符串参数传递给 scripts.php,就像您传递任何其他参数一样 URL:

...load('scripts.php?q=' + variable)

但是 scripts.php 无法知道对 index.php 的请求涉及哪些参数。

您必须转发您有兴趣让 scripts.php 知道的任何内容。

但是,您并不清楚为什么要这样做。您通常不应该通过多个 HTTP 请求在前端组装多个相关的 PHP 页面。相反,您的 PHP 页面应该只包含必要的相关组件,并在单个请求中提供完整的文档。

与其让 index.php 提供一些 JavaScript 来为 scripts.php 发出另一个 round-trip 请求,不如转发有关原始请求的详细信息,为什么不 index.php require( "scripts.php");,所以它是原始请求的部分