在JavaScript中构建查询字符串,并在一个参数中合并参数



,因此我希望能够在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;

希望这会有所帮助,

最新更新