页面加载后获取 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");
,所以它是原始请求的部分?
我在加载我的 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");
,所以它是原始请求的部分?