,因此我希望能够在JavaScript中的一个参数中构建一个查询字符串并嵌套不同的参数。我可以使用http_build_query函数在PHP中执行此操作。我尝试在JavaScript中执行此操作,但是参数已被&进行。这是我的php代码
$query string = [
'action' => 'index',
'url' => '/test/app/sell.php?'. http_build_query([
'id' => $id,
'name' => $name,
'state' => $currentState,
'p' => 1,
])
));
返回
url: "/test/app/sell.php?id=10&name=john&state=CA&p=1"
这是我的JS URL,但它使参数分开。
url = "url=/test/app/sell.php?"&id=" + id + "&name=" + name + "&state=" + form_name + "&p=" + 1"
返回:
id: 2,
name: "john",
state: "CA",
p: 1,
url: "/test/app/sell.php?"
我如何将所有参数添加到URL参数,并应返回此类似url: "/test/app/sell.php?id=10&name=john&state=CA&p=1"
您可以做类似的事情:
// Version 1 - preferable IMO
buildQuery = ({action, url}) => `${action}?${Object.entries(url)
.map(pair => pair.map(encodeURIComponent).join('='))
.join('&')}`;
let query = buildQuery({
action: "/test/app/sell.php",
url: {
id: 2,
name: "john",
state: "CA",
p: 1
}
});
console.log(`URL: ${query}`);
PHP中的$_GET
值将分配为数组['id'=>1, 'name'=>'john', ...]
。完整的URL不会在您的$_GET
超级全局中设置。要检查您的完整URL,我相信以下代码的某种组合是您要寻找的:
echo $_SERVER['REQUEST_URI'];
$actual_link = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
echo "$actual_link;
// Support for HTTP and HTTPS
$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
echo "$actual_link;
希望这会有所帮助,