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

时间:2019-04-15 10:03:25

标签: javascript php json wordpress

我正在将数组发布到我的wordpress数据库中。该数组是用Javascript生成的,我正在使用JSON将其传递给php。问题是当我查看user_meta表行时,显示以下内容:

<form id="form">
  <input type="submit">
</form>

<div id="result"></div>

这是它在数据库中的显示方式。这是其余的代码。

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

ReadJsonSave.php

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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