我试图发出一个POST(添加)请求,返回添加项的ID。ID是一个18个字符的字符串。只要字符串不超过16个字符,一切都正常。当长度为18个字符时,最后两个字符总是损坏的,因为它们默认为零。
我使用Vuejs作为前端,使用SpringBoot作为后端。我知道javascript在很长一段时间内限制了53位的精度,这就是为什么我使用字符串作为这个ID的类型。如果我试图返回一个18位的数字,而不是一个18个字符的字符串,我希望会发生这种情况。虽然我返回了一个类型字符串,但Axios会自动将其转换为LONG,从而导致其损坏。我如何告诉Axios不要这样做?#标题##谢谢。
==========后端restcontrollerendpoint=============
@PostMapping("/persons")
public ResponseEntity<String> addPerson(@Valid @RequestBody Person person) {
String newPersonId = personService.addPerson(person);
return new ResponseEntity<>(newPersonId, HttpStatus.OK);
}
===================前端Axios POST呼叫===================
axios
.post("http://localhost:xxxx/persons", newPerson)
.then(response => {
console.log("Response from post is: " + response.data);
console.log(response);
newPerson.id = response.data;
})
.catch(error => console.log(error));
=============控制台输出:=============
下面一行是控制台。从我的前端Post通话记录打印声明。这表明我收到了ID,最后两个数字为零。
回复是:622056030329638900
注意这个反应。数据(以下第3行)以900结尾,没有引号。如果你往下读,回答。要求答复(第10行)
预期结果:发送的所有18个字符与接收的字符匹配。实际结果:前16个字符匹配,后两个为零。
尝试在后端使用object返回:
{value: "622056030329638900"}
这对我有用!
这个数字(6220560329638912
)对于JavaScript来说太大了。看看Number。最大安全整数
,值为9007199254740991
。任何大于“最大安全整数”的值都不能在浏览器中用作数字。
如果可以的话,把它当作一根绳子。如果必须使用response,请让API返回字符串值。数据
。否则,使用responseText
就可以了。
MAX_SAFE_INTEGER常量的值为9007199254740991 (9,007,199,254,740,991或~9000万亿)。这个数字背后的原因是JavaScript使用IEEE 754中规定的双精度浮点格式数字,并且只能安全地表示-(2^53 - 1)和2^53-1之间的数字。
这里的安全指的是精确表示整数并正确比较它们的能力。例如,Number.MAX_SAFE_INTEGER1===Number.MAX_SAFE_INTEGER2将计算为true,这在数学上是不正确的。有关详细信息,请参见Number.isSafeintger()。
下面是一个演示:
js prettyprint-override">console.log(Number.MAX_SAFE_INTEGER);
console.log(622056030329638922);
问题最终归结为这样一个事实,即像“12334”这样的字符串不是有效的JSON字符串(而是有效的JSON数字)。参见这个问题
<script>
// 1233
alert(JSON.parse("1234")); // treated as a number
// SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
alert(JSON.parse("ABC"));
</script>
Axios默认情况下以这种方式转换响应(它解析json):
transformResponse: [function transformResponse(data) {
/*eslint no-param-reassign:0*/
if (typeof data === 'string') {
try {
data = JSON.parse(data);
} catch (e) { /* Ignore */ }
}
return data;
}],
因此,如果你有以下选择:
第一:返回一个有效的Json字符串,如下所示:\"622056030329638912\"(服务器端的JSON ENCODE)
alert(JSON.parse("\"622056030329638912\""));
二:禁用axios上的转换:
axios
.post("http://localhost:xxxx/persons", newPerson, {
transformResponse: function(response) {
// do not transform response at all...
return response;
}
})
.then(response => {
console.log("Response from post is: " + response.data);
console.log(response);
newPerson.id = response.data;
})
.catch(error => console.log(error));
问题内容: 好的,这就是我的for子手游戏代码,我唯一要做的就是让我的程序将其中一个单词随机化,这应该在方法中成功完成。但是我唯一的问题是让String变量 “ word” 返回到主类(在主类中的所有 “ word” 变量下面都有错误)。 如果我可以通过这种方法获得另一种帮助,或者从列表中产生随机单词的另一种方法,那将是惊人的。 问题答案: 在Java中,参数是通过值而不是引用传递的。因此,您不能
原文: http://exploringjs.com/impatient-js/ch_strings.html 字符串是 JavaScript 中的原始值和不可变的。也就是说,与字符串相关的操作总是会生成新的字符串,并且永远不会更改 18.1。普通字符串字面值 纯字符串字面值由单引号或双引号分隔: const str1 = 'abc'; const str2 = "abc"; assert.e
通过使用下面的代码,我可以找出我所在的数据中心,它工作正常。。 但它可能无法找到任何数据中心,因此目前我正在返回。 是否有任何直接的方式或单行命令,我可以在中随机返回或或而不是返回? 我知道一种方法是列出字符串,然后随机选择0到2(包括0到2)之间的任何整数,然后找到字符串。但它的代码太多了,事实上,它不仅仅是想看看有没有其他方法可以做到这一点? 我可以在枚举中直接使用任何简单而直接的方法吗?
GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串
我试图使用Apache和MySQL XAMPP数据库为我的论坛建立一个登录页面,但它多次返回回显字符串,我知道它会遍历数据库中的所有行,检查是否为真,它返回的是“无效的用户名或密码!”直到找到正确的登录信息,然后返回“welcome”(欢迎)。 它是如何做到的,它只返回一个不正确的和正确的字符串?。
问题内容: 我需要实现一个调用Web服务并返回响应的函数。 我试过了 在调用 Web服务时,将成功调用。但是在接收到响应之前返回。因此,我正在获取重调谐器值“ initial_value”。函数 如何从响应中返回值? 问题答案: GWT不支持同步Ajax,因此您必须使用异步模式对应用程序进行编码。 GWT用于执行请求的低级对象是XMLHttpRequest(旧的IE版本除外),并且GWT总是在as