gpt4 book ai didi

javascript - 一些特殊字符保存为JSON格式时转换为 '_',PHP

转载 作者:行者123 更新时间:2023-11-30 20:15:29 25 4
gpt4 key购买 nike

我有一个 JSON 对象(通过 JavaScript 和 Ajax 从前端传递),格式如下:

[{ "telephone": "+381-01-33-33-333", "email": "test@test.com"}]

但是当通过PHP在服务器上保存为JSON文件时,所有的点('.')和加号('+')都变成下划线('_'),像这样:

[{ "telephone": "_381-01-33-33-333", "email": "test@test_com"}]

这是我的 PHP 代码:

<?php
// Accessing users data sent from frontend
$user = (array) json_decode(key($_POST));

add_data('users', $user);

function add_data($filename, $data) {

// Declaring users json file path
$json_file = '../data/' . $filename . '.json';
$inp = file_get_contents($json_file);

// If json file is empty add status data else append status data to existing array
if($inp == '') {
$tempArray[] = $data;
} else {
$tempArray = (array) json_decode($inp);
array_push($tempArray, $data);
}
// Convert array to json data and write it to users json file
$jsonData = json_encode($tempArray);
file_put_contents($json_file, $jsonData);
}
?>

至此,我已经在前端检查了JSON的内容,没有问题。我也尝试过操纵编码,但没有成功。

最佳答案

貌似$_POST无法正常接收JSON,所以我改了:

$user = (array) json_decode(key($_POST));

$user = json_decode(file_get_contents("php://input"));

在 PHP 中,我还必须在前端的 ajax 请求中添加内容类型:

$.ajax({
type: "POST",
url: "php/add_user.php",
async: false,
data: JSON.stringify(user),
contentType: "application/json; charset=utf-8"
})

关于javascript - 一些特殊字符保存为JSON格式时转换为 '_',PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51968331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com