javascript - 在 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=/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
superglobal 中设置。要检查您的完整网址,我相信您正在寻找以下代码的某种组合:
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;
希望这可以帮助,
推荐阅读
- kubernetes - Kubernetes:通过 traefik 入口控制器处理集群中多个 LoadBalancer 的连接
- angular - 在 Angular 中迭代 *ngFor 时修复文字中的破折号
- php - PHP 处理超时。如何优化/排队以避免超时
- nginx - 工作进程的 Openresty 动态生成
- java - 在 Java 中读取 Docx 文件页数的最快方法(文字渲染后)?
- php - 通过 URL 传递多个查询参数
- node.js - 这与 npm 无法下载依赖项有关
- hazelcast - 配置 Hazelcast Map 备份时,它是否也映射了 max-size 包括备份条目?
- sql - 从字段中删除不需要的字符
- ios - 应用内购买:设备上的应用商店收据验证:如果用户将设备日期更改为过去,如何处理这种情况