猿问

将JS数组转换为PHP时显示“ \”

我正在将数组发布到我的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( 


);


冉冉说
浏览 136回答 2
2回答

尚方宝剑之说

您的代码有几个问题。该wp_usermeta表需要一个user_id用于关联的meta,看起来好像不是您所提供的。另外,$wpdb->insert您应该使用而不是使用update_user_meta( $user_id, $meta_key, $meta_value )。编辑:您的代码中还有另一个问题。$myBuild2 = json_decode('array');应该是$myBuild2 = json_decode( $myBuild );。您当前不解码post var,这就是为什么在数据库中获取未序列化的字符串的原因。这应该工作。readJsonSave.php:<?phprequire_once("../../../../wp-load.php");$myBuild = wp_unslash( $_POST['array'] );$myBuild2 = json_decode( $myBuild );update_user_meta( $user_id, 'test', $myBuild2 );&nbsp; &nbsp; // Update $user_id

米脂

array: JSON.stringify(array)=>可能是因为您的数组已被转换为字符串,而您正尝试再次将其转换。检查您传递的数组的值。尝试 :$.ajax({&nbsp; &nbsp; url:"readJsonSave.php",&nbsp; &nbsp; method: "post",&nbsp; &nbsp; data: { array: array , buildName: buildName },&nbsp; &nbsp; success: function(res){&nbsp; &nbsp; console.log(res);&nbsp; }})
随时随地看视频慕课网APP
我要回答