- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在将一些较旧的 AngularJS 代码(实际上是 Ionic 1)转换为较新的 Angular(Ionic 4),我遇到了一个烦人的问题。
所以在 AngularJS 中的每一个 Http Post 上,之前的开发者都是这样做的:
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
// Add authentication headers if required
if (token) headers['x-auth-token'] = token;
if (userid) headers['x-auth-id'] = userid;
var config = {
url: api(endpoint),
method: method,
headers: headers
};
if (method == 'GET') {
config['params'] = data;
} else {
config['data'] = $httpParamSerializerJQLike(data);
}
return $http(config).then(function(response) {
return response.data;
});
手头的问题是这一行:$httpParamSerializerJQLike(data);
在 Angular 2+ 中,这不存在并且会导致问题。
有人可以帮我把它转换成新版本的 Angular 吗?
这是我目前所拥有的:
let headers = {
"Content-Type": "application/x-www-form-urlencoded"
};
if (this.token) headers["x-auth-token"] = this.token;
if (this.userid) headers["x-auth-id"] = this.userid.toString();
let config = {
url: await this.api(endpoint),
method: method,
headers: headers,
body: data
};
if (method === "GET") {
config["params"] = data;
return await this.http.get(config["url"], config).toPromise();
} else {
config["data"] = await this.formatData(data);
return await this.http
.post(config["url"], config["data"], config)
.toPromise();
}
如您所见,我已经创建了这个 formatData()
函数,它试图序列化数据,但它并没有在 100% 的时间内正常工作。特别是当存在嵌套的 JSON 数据时。
这是我创建的 formatData 函数:
async formatData(obj) {
var str = [];
for (var key in obj) {
if (obj != undefined) {
if (obj.hasOwnProperty(key)) {
str.push(
encodeURIComponent(key) + "=" + encodeURIComponent(obj[key])
);
}
}
}
return str.join("&");
}
非常感谢任何帮助!如果有人知道我可以安装的任何库或与此库类似的任何内容:$httpParamSerializerJQLike(data);
最佳答案
I have created this
formatData()
function which tries to serialize the data, but it just doesn't work 100% of the time. Specifically when there is nested JSON data.
如果您必须使用application/x-www-form-urlencoded
,请使用jQuery param对数据进行编码。
console.log($.param({a:88, b:77}));
console.log($.param({a: {b:4,c:8}}));
console.log($.param({a: [4,8]}));
<script src="//unpkg.com/jquery"></script>
没有针对内容类型 application/x-www-form-urlencoded
的 JavaScript 对象编码的正式标准。 jQuery 库普及了 param作为编码对象和数组的一种方式。它被一些 API 理解为 de-facto标准。
编码 JavaScript 对象和数组的正式标准是 JSON.org由 Douglas Crockford 推广并被公认为标准 RFC8258和 ECMA-404。
如果可能,最好使用内容类型application/json
。
关于angular - 内容类型 `application/x-www-form-urlencoded` 的编码对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56223414/
我正在使用 nginx on Rackspace cloud following a tutorial并且已经搜索了网络,但到目前为止无法对此进行排序。 出于 SEO 和其他原因,我希望 www.my
我到处搜索并尝试了各种 .htaccess 配置,但没有找到答案。 只访问 .htaccess 文件我想: 将 NON www 定向到 NON www SSL示例:http://example.com
下面的 htaccess 命令将所有非 www 转移到 http www RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^
我希望重定向所有内容: http:// http://www. https://www. to https:// 这可能已经在这里得到了回答,但是在浏览了看起来相关的问题后,它们都不完全是我想要的,并
我有一个全新的网站,最初是 http://然后我将网站重定向到 http://www它的工作就像一个魅力,但自从我安装了 SSL 我有两个版本的网站 http://www.example.com和 h
我必须将我的网站从 https://www.example.com/ 重定向到 https://website.com/。 SSL 已正确安装在我的服务器上。 我正在使用 Apache 并且必须使用
我有一个 SEO 人员让我很困惑。他提到在 Google 网站管理员工具中,我应该验证网站的 www 版本以及非 www(非 www 已经验证)。所以我告诉他没有必要,因为出于规范原因(如 Matt
-- 请参阅下面的 Tl;dr 以获得简短版本-- 在我的 ubuntu-16.04 droplet apache2 和 php7 上都使用用户 www-data。在某些时候,所有三个 wordpre
Tumblr 的文档 ' Using a custom domain name ' 非常有帮助,它清楚地说明我需要创建一个 A唱片为 example.com指向 66.6.44.4 ,以便我的网站可以
我有一个托管在谷歌云存储桶上的静态网站。 在我的存储桶前面,我有 cloudflare dns。 存储桶是 example.com Cloudflare 设置:CNAME > @ > c.storag
我正在使用以下代码编写 www 到非 www 重定向: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
我的一个 friend 目前正在修补 JpCap在 Java 中,我们发现了一些关于 Java 正则表达式的有趣(也许?)问题。 只有 HTTP 流量被捕获并随后进行分析。为此,他使用了如下模式: P
我目前在 htaccess 文件中使用以下代码,将我的服务器中托管的网站的所有非 www 网址重定向到 www 网址。 RewriteCond %{HTTP_HOST} !^www\. Rewrite
我有一个 wordpress 网站 www.domain.com,我们刚刚购买了一个 SSL 证书,但它只适用于 domain.com(没有 www)。我配置了 .htaccess 和站点 url R
我的 Apache 服务器上的虚拟主机中有以下内容, Redirect permanent / https://domain.com Options
我正在尝试将所有流量从 HTTP 站点重定向到 HTTPS 站点,并将所有 www 流量重定向到非 www 站点。我的设置包括 HTTP 站点的 nginx.conf 文件,我已将 301 重定向规则
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 12 年前。 Improve thi
我有一个域说 http://www.testexample.com .当我登录 http://www.testexample.com然后回到http://testexample.com在浏览器中;登录
我正在为我的 Web 应用程序使用 EC2 实例。我买了一个新的 SSL 并将其安装在 AWS 经典负载均衡器上,我的 SSL 工作正常。但从 SEO 的角度来看,我想将所有请求从 www 和非 ww
这是否受跨源策略限制? 最佳答案 你不能。您只能向 www.foo.com 发送请求。 关于javascript - 在页面 'www.foo.com' 上,从 'www.example.com' 加
我是一名优秀的程序员,十分优秀!