- 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/
我正在编写一个 Web 应用程序并学习如何对 html 链接进行 urlencode... 这里的所有 urlencode 问题(参见下面的标签)都是“如何...?”问题。 我的问题不是“如何?”但“
Dart 中有进行 urlencoding 的函数吗?我正在使用 XMLHttpRequest 对象进行 AJAX 调用,并且需要对 url 进行 url 编码。 我在 dartlang.org 上进
我们有一些非常基本的 mod_rewrite 规则: RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302
Server.UrlEncode 和 HttpUtility.UrlEncode 之间有区别吗? 最佳答案 我之前对这些方法感到非常头疼,我建议您避免 UrlEncode 的任何变体,而是使用 Uri
在PHP中: php -r "echo urlencode('["IM"]'); " 结果是%5BIM%5D 但是在java中 String text = URLEncoder.encode('["
From Python 的 urllib.urlencode 的 java 等价物是什么? 喜欢 >>> urllib.urlencode({'abc':'d f', 'def': '-!2'}) '
我发现了一个奇怪的问题,即 urlencoding 行为不一致。 更新 Spring MVC 4.3 和 5.1 版本之间存在差异: // FAIL in MVC 4.x @Test public v
express 框架带有 express 函数 express.json() 和 express.urlencoded()。 我们有 body-parser 库,它似乎具有相同的功能。 我的问题是,b
所以我正在处理的站点有一个过滤系统,它通过一个查询字符串传递一个键和值系统来运行。 整个站点很快就会进行重构,我正在维护现有站点,因此在我们讨论实现这一点的正确方法之前,我只需要更改分隔符的想法。 现
Dart中有进行urlencoding的功能吗?我正在使用XMLHttpRequest对象进行AJAX调用,我需要对该URL进行URL编码。 我在dartlang.org上进行了搜索,但没有得到任何结
我正在创建一个涉及将中文字符作为 url 参数发送的 php 应用程序。 我必须发送如下查询: http://xyz.com/?q=New 但是 xyz.com 的脚本不会自动对中文字符进行编码。因此
全部, 有个文字区说 如果用户给出输入, here is my name and my mail id is "a@x.com" 当数据在服务器端发布时,数据被接收为 这是我的名字,我的邮件
我想使用java的URLEncoder class编码我的 url 字符串。但是,默认情况下它将空格转换为“+”(加号)。我希望它改用“-”(类似于本网站对其网址进行编码的方式)。 我想知道最好的方法
我想对以下内部模板进行 url 编码 {{address.street}} {{address.city}} {address.state}} 无论如何在模板端执行此操作并将其放入href(我不希望将
我想在控制台应用程序VB.NET,VS 2010 Beta 2中使用HttpUtility.UrlEncode。 System.Web.HttpUtility.UrlEncode(item) 错误消息
我有一个服务堆栈应用程序,一个测试服务收到一个简单的请求,但是我发现收到的请求的值与原始请求不匹配。 我发:http://localhost/testapp/test?value=%22test%20
有没有办法对路径中的目录分隔符/进行 urlencode ? 喜欢 urlencode('/this/is/my/file right here.jpg'); 最佳答案 你可以使用 explode将您
是否可以在不转换 # 或 % 的情况下运行 urlencode 函数? 最佳答案 你能不能只做: $str = urlencode($str); $str = str_replace("%23", "
我正在尝试使用可选参数 shown in the docs 对 Django 1.3 中包含斜杠的字符串进行 URL 编码: {{ someString|urlencode:"" }} 但是,斜杠不会
我无法快速找到谷歌答案,而且我面前没有帮助(长话短说),所以,我的问题是:是否有一种简单的方法可以在 MS Visual 中对字符串进行 URL 编码FoxPro 8 最佳答案 这是一个可以满足您需要
我是一名优秀的程序员,十分优秀!