Преобразование массива JS в PHP показывает "\" - PullRequest
0 голосов
/ 15 апреля 2019

Я размещаю массив в моей базе данных WordPress. Массив создается в Javascript, и я использую JSON для передачи его в php. Проблема в том, что при просмотре строки таблицы user_meta мне представляется следующее:

Meta_Key \"test\"
Meta_Value [\"1\",\"2\",\"3\",\"4\",\"2\",\"3\",\"4\",\"5\"]

Так выглядит в базе данных. Вот остаток кода.

    $.ajax({
    url:"readJsonSave.php",
    method: "post",
    data: { array: JSON.stringify( array ), buildName: 
    JSON.stringify(buildName) },
    success: function(res){
    console.log(res);
  }
})
});

ReadJsonSave.php

require_once("../../../../wp-load.php");

$buildName = $_POST['buildName'];
  $myBuild = $_POST['array'];

$myBuild2 = json_decode('array');
echo $myBuild2;
print_r($myBuild);
$wpdb->insert('wp_usermeta', array(
                               'meta_key' => $buildName,
                               'meta_value' => $myBuild2

                       ), 
array( 

) 
);

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Есть несколько проблем с вашим кодом.Для таблицы wp_usermeta требуется user_id для связанной мета, что, по-видимому, не похоже на то, что вы предоставляете.

Кроме того, вместо $wpdb->insert следует использовать update_user_meta( $user_id, $meta_key, $meta_value ).

РЕДАКТИРОВАТЬ: У вас есть другая проблема в вашем коде.$myBuild2 = json_decode('array'); должно быть $myBuild2 = json_decode( $myBuild );.В настоящее время вы не расшифровываете post-var, и поэтому вы получаете несериализованную строку в базе данных.

Это должно работать.readJsonSave.php:

<?php
require_once("../../../../wp-load.php");

$myBuild = wp_unslash( $_POST['array'] );
$myBuild2 = json_decode( $myBuild );

update_user_meta( $user_id, 'test', $myBuild2 );    // Update $user_id
0 голосов
/ 15 апреля 2019

array: JSON.stringify(array) => это может быть потому, что ваш массив уже был преобразован в строку и вы пытаетесь преобразовать его снова.Проверьте значение массива, который вы передаете.Попробуйте:

$.ajax({
    url:"readJsonSave.php",
    method: "post",
    data: { array: array , buildName: buildName },
    success: function(res){
    console.log(res);
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...