我想用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未定义。
答案 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);