JSON stringify создает подчеркивание, когда есть пробел или небуквенный символ, почему? - PullRequest
0 голосов
/ 09 апреля 2020

Здравствуйте, у меня есть функция, которая отправляет данные с помощью метода POST на сервер, который затем я использую PHP для декодирования строки JSON. Я использую для заголовков "Content-Type": "application/x-www-form-urlencoded" и для тела 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
)

Моя проблема в том, что есть пробел или любая другая не-буква символ, как, например, в этом адресе электронной почты, вместо этого я получил подчеркивание. Я отправил 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");
        }
    });
}

До сих пор я пробовал эти вещи, но я всегда получаю пустую строку:

  • изменить тип содержимого на application/json
  • удалить JSON.stringify из тела
  • удалить JSON.stringify из тела и добавить application/json

1 Ответ

0 голосов
/ 09 апреля 2020

Мне наконец-то удалось это сделать. Я должен был использовать это 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
)
...