通过ajax传输哈希映射并转换为php数组


Transferring hash maps over ajax and converting to php array

我正在制作一个迷你语言的解释器,并且我将相关信息存储在哈希映射中。我将这些散列映射转换为JSON stringify,通过ajax发送到服务器端。

这是我发送到服务器端的后json字符串化代码:

{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"}

在服务器端,我怎么能很容易地使php数组的"kv":["24","23","20"]位没有搜索某些字符?

在通过ajax发送之前,json数组的输出是:
{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"}

收到后,数据为:

{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"}

htmlspecialchars_decode函数之后,变成:

{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"}

json_decoding给我null

ajax代码:
function addValues(jsonArray) {
      alert(jsonArray);
       $.ajax({
        url: 'insertTree.php',
        type: 'POST',
        data: 'dataToReceive=' + jsonArray,
        success: function(data) {
        //called when successful
       alert(data);
        window.location.reload();
        },
        error: function(e) {
        //called when there is an error
        console.log(e.message);
        }
      });
     }

PHP接收代码:

$dataReceived = htmlspecialchars(strip_tags($_POST["dataToReceive"]));
$dataRefined = htmlspecialchars_decode($dataReceived);
$var = json_decode($dataRefined, true);
var_dump($var['kv']); //null

使用json_decode获取值。由于您的基本字符串不是有效的JSON,因此我对其进行了一些处理以使其为

$string = '{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"}';
$data = explode('|', str_replace('},{', '}|{', $string));
foreach($data as $str) {
    $var = json_decode($str, true);
    if(isset($var['kv'])) var_dump($var['kv']);
}