如何通过ajax调用在jp_usermeta中获取meta_key及其meta_value(json格式)

时间:2015-04-27 16:48:52

标签: php mysql ajax json wordpress

在Wordpress中,我在“主题编辑个人资料”页面中创建了一些自定义字段,其中一个允许我输入用户地址。 该地址自动存储在表wp_usermeta下的WordPress DB中。 (自定义字段称为user_address)。

从wp_usermeta,名为meta_key的列有一个值' user_address'。但我试图收集的内容是它的meta_value等价物。

截图:

enter image description here

这里我的PHP代码将数据转换为JSON格式:

...... 
$row=$db->prepare('select * from wp_usermeta'); 
......

foreach($row as $rec)//foreach loop  
   {  
     $json_array['meta_key']=$rec['meta_key'];
     array_push($json_data,$json_array); 
   }

来自JS文件:

request('file.php', function(data) {

  var data = JSON.parse(data.responseText);

  for (var i = 0; i < data.length; i++) {
       console.log(data[i].meta_key);
  }
........

我的问题在这里。从数据[i]我需要得到所有&#39; user_address&#39; (在meta_key中)和meta_value中存储的等价值,如上面的screeshot所示,但不幸的是我不知道如何获得它。 我可以获取所有meta_key值,但我不知道如何将user_address与meta_value相关联。

我试过了:

data[i].meta_key.user_address.meta_value
data[i].user_address.meta_value
data[i].meta_key[user_address].meta_value
data[i].meta_key['user_address'].meta_value

有什么建议吗? 感谢

2 个答案:

答案 0 :(得分:1)

好的,所以表格中的user_address不是密钥,而是meta_key的值。从逻辑上思考,您的最终结果是,您希望meta_value的{​​{1}}具有meta_key的值。

一种方法,将php中的foreach循环更改为:

user_address

现在,如果您转储该数组,它将如下所示:

foreach($row as $rec)
    {
        $json_array[$rec['meta_key']]=$rec['meta_value'];
        array_push($json_data,$json_array);
    }

您可以使用array( ... [10] => array ( 'user_address' => '26 Aorile Costo' ), ... )

在javascript中引用它

您也可以摆脱data[i].user_address,只输出array_push,这样您就不必在javascript中使用数组,并且可以简单地将其引用为$json_array,因为数组转储现在看起来像:

data.user_address

答案 1 :(得分:0)

我找到了解决方案。 改为

$row=$db->prepare('select * from wp_usermeta');

$row=$db->prepare('select * from wp_usermeta where meta_key = "user_address"')

然后我改变了:

$json_array['meta_key']=$rec['meta_key'];

$json_array['meta_value']=$rec['meta_value'];

和data [i]变为data [i] .meta_value