我正在将数组发布到我的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);
}
})
});
答案 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