为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
冉冉说 2021-04-01 14:15:12
我正在将数组发布到我的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.phprequire_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 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

您的代码有几个问题。该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:


<?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


查看完整回答
反对 回复 2021-04-23
?
米脂

TA贡献1836条经验 获得超3个赞

array: JSON.stringify(array)=>可能是因为您的数组已被转换为字符串,而您正尝试再次将其转换。检查您传递的数组的值。尝试 :


$.ajax({

    url:"readJsonSave.php",

    method: "post",

    data: { array: array , buildName: buildName },

    success: function(res){

    console.log(res);

  }

})


查看完整回答
反对 回复 2021-04-23
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信