用jquery从php获取json数组

时间:2017-04-17 00:11:54

标签: php jquery json ajax

我想用PHP从jQuery中获取一个json数组,但它不起作用。

PHP

$json[] = array(
  'status' => 'no',
  'xxx' => $myhtml
);

echo json_encode($json);

$myhtml是HTML源代码。

的jQuery

$.post('server.php', {'work' : work , 'view_id' : view_id } , function(data){
    var json = JSON.parse(data);
    $('#main-show').html(json.xxx);         
});

我在控制台中有数组json,但json.xxx未定义。

2 个答案:

答案 0 :(得分:1)

您正在创建一个额外的外部阵列。

您当前的JSON看起来像是:

[
   {"status" : "no",  "xxx" : "html string"}
]

所以需要访问

$('#main-show').html(json[0].xxx);

但将php改为:

可能更容易
$json = array(
  'status' => 'no',
  'xxx' => $myhtml
);

当json编码时会产生:

{"status" : "no",  "xxx" : "html string"}

答案 1 :(得分:1)

使用JSON.stringify()php代码也被修改,即:

<强> HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
</head>
<body>

<div id="main-show"></div>
<script>
    work = "test";
    view_id = "test2";
    $.post('json.php', {'work' : work , 'view_id' : view_id } , function(data){
        var json = JSON.parse(JSON.stringify(data));
        $('#main-show').html(json.xxx);
    });
</script>
</body>
</html>

<强> PHP:

<?php
header('Content-Type: application/json');
$myhtml = '<p> TEST </p>';
$json = array(
    'status' => 'no',
    'xxx' => $myhtml
);
echo json_encode($json);