JSON stringify 在有 space 或 non-letter 字符时创建下划线,为什么?
JSON stringify creates underscore when there is a space or non-letter character, why?
你好,我有一个函数,它使用 POST
方法将数据发送到服务器,然后我使用 PHP
解码 JSON 字符串。我正在使用 headers "Content-Type": "application/x-www-form-urlencoded"
和 body JSON.stringify
我最后得到的是这个字符串:
[{"registration":true,"name":"dfsdf","last":"fsfs","email":"fdsfsd@gmail_com","phone":"fdsfds","city":"fsfsd","password":"password"}]
=>
然后我使用此代码 json_decode(key($_POST))
来解码字符串,最后得到:
stdClass Object
(
[registration] => 1
[name] => dfsdf
[last] => fsfs
[email] => fdsfsd@gmail_com
[phone] => fdsfds
[city] => fsfsd
[password] => password
)
我的问题是当有 space 或任何其他 non-letter 字符时,例如在这个电子邮件地址中,我得到了一个下划线。我已经发送 fdsfsd@gmail.com,但我最终收到 fdsfsd@gmail_com。你知道怎么解决吗?如果此信息有价值,我正在使用 Wix 支持的模块顺便发送数据。这是我的完整代码:
import {fetch} from 'wix-fetch';
export function registration(name, last, email, phone, city, password) {
return fetch("https://api.demo.com/auth.php", {
"method": "post",
"headers": {
// "Content-Type": "application/json"
"Content-Type": "application/x-www-form-urlencoded"
},
"body": JSON.stringify({
registration: true,
name: name,
last: last,
email: email,
phone: phone,
city: city,
password: password,
}),
}).then((response) => {
if (response.ok) {
return response.text();
// return response.json();
} else {
return Promise.reject("Fetch did not succeed");
}
});
}
到目前为止我已经尝试过这些东西,但我总是以空字符串结束:
- 将 Content-Type 更改为
application/json
- 从 body
中删除 JSON.stringify
- 从 body 中删除
JSON.stringify
并添加 application/json
我终于设法完成了。我不得不使用这个 php://input
,它终于奏效了。这是我使用的代码行:
$data = json_decode(file_get_contents('php://input'), true);
这是输出
Array
(
[registration] => 1
[name] => dfsdf
[last] => fsfs
[email] => fdsfsd@gmail.com
[phone] => fdsfds
[city] => fsfsd
[password] => password
)
你好,我有一个函数,它使用 POST
方法将数据发送到服务器,然后我使用 PHP
解码 JSON 字符串。我正在使用 headers "Content-Type": "application/x-www-form-urlencoded"
和 body JSON.stringify
我最后得到的是这个字符串:
[{"registration":true,"name":"dfsdf","last":"fsfs","email":"fdsfsd@gmail_com","phone":"fdsfds","city":"fsfsd","password":"password"}] =>
然后我使用此代码 json_decode(key($_POST))
来解码字符串,最后得到:
stdClass Object
(
[registration] => 1
[name] => dfsdf
[last] => fsfs
[email] => fdsfsd@gmail_com
[phone] => fdsfds
[city] => fsfsd
[password] => password
)
我的问题是当有 space 或任何其他 non-letter 字符时,例如在这个电子邮件地址中,我得到了一个下划线。我已经发送 fdsfsd@gmail.com,但我最终收到 fdsfsd@gmail_com。你知道怎么解决吗?如果此信息有价值,我正在使用 Wix 支持的模块顺便发送数据。这是我的完整代码:
import {fetch} from 'wix-fetch';
export function registration(name, last, email, phone, city, password) {
return fetch("https://api.demo.com/auth.php", {
"method": "post",
"headers": {
// "Content-Type": "application/json"
"Content-Type": "application/x-www-form-urlencoded"
},
"body": JSON.stringify({
registration: true,
name: name,
last: last,
email: email,
phone: phone,
city: city,
password: password,
}),
}).then((response) => {
if (response.ok) {
return response.text();
// return response.json();
} else {
return Promise.reject("Fetch did not succeed");
}
});
}
到目前为止我已经尝试过这些东西,但我总是以空字符串结束:
- 将 Content-Type 更改为
application/json
- 从 body 中删除
- 从 body 中删除
JSON.stringify
并添加application/json
JSON.stringify
我终于设法完成了。我不得不使用这个 php://input
,它终于奏效了。这是我使用的代码行:
$data = json_decode(file_get_contents('php://input'), true);
这是输出
Array
(
[registration] => 1
[name] => dfsdf
[last] => fsfs
[email] => fdsfsd@gmail.com
[phone] => fdsfds
[city] => fsfsd
[password] => password
)