Php 正确json格式的数据
我正在开发我的网站的一个功能,我需要点击按钮触发一个ajax调用。我正在接收以下格式的数据:Php 正确json格式的数据,php,json,ajax,Php,Json,Ajax,我正在开发我的网站的一个功能,我需要点击按钮触发一个ajax调用。我正在接收以下格式的数据: Object { name: "abc", category_id: "1" } 我想要这样的结果: { "list" : [ { "name" : "xyz", "category_id" : "1" }, { "name" : "abc", "ca
Object {
name: "abc",
category_id: "1"
}
我想要这样的结果:
{
"list" : [
{
"name" : "xyz",
"category_id" : "1"
}, {
"name" : "abc",
"category_id" : "11"
}
]
}
我的服务器端代码是:
<?php
header('Content-Type: application/json');
$conn = mysqli_connect("localhost","root","","test") or die(mysqli_error());
$name = $_GET['name'];
$sql = "SELECT * from test_search where name = '$name'";
$result = mysqli_query($conn,$sql) or die(mysqli_error($conn));
while($row = mysqli_fetch_array($result)) {
$name = $row['name'];
$category = $row['category_id'];
}
$data = array("name" => $name , "category_id" => $category );
echo json_encode($data);
?>
之前,您将$row数组项分配给变量,然后直到循环结束后才使用它们。在循环之后,您使用了这些变量,但它只包含最后的值。您必须将项目附加到数组内部的数组(“列表”),然后
json\u encode()
从循环中获取结果以获得所需的效果
<?php
$conn = mysqli_connect("localhost","root","","test") or die(mysqli_error());
$name = $_GET['name'];
header('Content-Type: application/json');
$sql = "SELECT * from test_search where name = '$name'";
$result = mysqli_query($conn,$sql) or die(mysqli_error($conn));
$data_array = array('list' => array());
while($row = mysqli_fetch_array($result))
{
$data_array['list'][] = array("name" => $row['name'], "category_id" => $row['category_id'] );
}
echo json_encode($data_array);
?>
之前,您将$row数组项分配给变量,然后直到循环结束后才使用它们。在循环之后,您使用了这些变量,但它只包含最后的值。您必须将项目附加到数组内部的数组(“列表”),然后json\u encode()
从循环中获取结果以获得所需的效果
<?php
$conn = mysqli_connect("localhost","root","","test") or die(mysqli_error());
$name = $_GET['name'];
header('Content-Type: application/json');
$sql = "SELECT * from test_search where name = '$name'";
$result = mysqli_query($conn,$sql) or die(mysqli_error($conn));
$data_array = array('list' => array());
while($row = mysqli_fetch_array($result))
{
$data_array['list'][] = array("name" => $row['name'], "category_id" => $row['category_id'] );
}
echo json_encode($data_array);
?>
您需要将$name和$category变量推到另一个数组中-目前您只是在while循环中重写这些值
做一些类似于:
$list = array();
while($row = mysqli_fetch_array($result))
{
$list[] = array('name'=>$row['name'], 'category_id'=>$row['category_id']);
}
$data = array('list'=>$list);
echo json_encode($data);
您需要将$name和$category变量推送到另一个数组中——目前您只是在while循环中覆盖这些值
做一些类似于:
$list = array();
while($row = mysqli_fetch_array($result))
{
$list[] = array('name'=>$row['name'], 'category_id'=>$row['category_id']);
}
$data = array('list'=>$list);
echo json_encode($data);
在这里阅读有关PHP数组的内容-
另外,在直接跳转到json\u encode($data)
之前,请尝试var\u dump($data)
查看您使用的是什么
您需要在while循环中构建阵列
$data = [];
while($row = mysqli_fetch_array($result)) {
$data['list'][] = [
'name' => $row['name'],
'category' => $row['category']
]
}
echo json_encode($data);
未经测试,但应能满足您的需要。请阅读这里的PHP数组-
另外,在直接跳转到json\u encode($data)
之前,请尝试var\u dump($data)
查看您使用的是什么
您需要在while循环中构建阵列
$data = [];
while($row = mysqli_fetch_array($result)) {
$data['list'][] = [
'name' => $row['name'],
'category' => $row['category']
]
}
echo json_encode($data);
未经测试,但应该能满足您的需要。代码末尾的“s”是故意的吗?我假设这只是测试,但在生产中不要使用此代码,而不转义用户提交的数据。代码末尾的“s”是故意的吗?我假设这只是测试,但是-在生产中使用此代码时,不要转义用户提交的数据。你快到了<代码>数组('list')
不表示列表
索引,它表示数组包含列表
元素。正确的数组声明应该是$data\u array=array()
@RajdeepPaul抱歉,已经有一段时间没有使用JSON了。编辑答案:)谢谢你的提醒。$data\u array['list'][
是正确的,NTL upvote来自我。:-)@哦,我真蠢!是的,我明白你在说什么@但是,当您重新添加列表索引时,忘记了添加要附加到内部数组的开括号和闭括号。我纠正了。我以前的错误是简单地将“list”作为字符串项添加到父数组中,而不是将其作为索引添加到父数组中<代码>数组('list')
不表示列表
索引,它表示数组包含列表
元素。正确的数组声明应该是$data\u array=array()
@RajdeepPaul抱歉,已经有一段时间没有使用JSON了。编辑答案:)谢谢你的提醒。$data\u array['list'][
是正确的,NTL upvote来自我。:-)@哦,我真蠢!是的,我明白你在说什么@但是,当您重新添加列表索引时,忘记了添加要附加到内部数组的开括号和闭括号。我纠正了。我以前的错误是简单地将“list”作为字符串项添加到父数组中,而不是将索引添加到父数组中。