问题
我正在使用带有下拉列表的AJAX jQuery来从PHP获得一些响应。到目前为止,我只想从数据库中获取一行,但现在我需要另一个数组。
现状
前面 -
$.ajax({
type: "POST",
url: "project_details.php",
data: data_string,
cache: false,
success: function(data){
if(data){
var json = data;
obj = JSON.parse(json);
$("#project-name").text(obj.project_name);
$("#start-date").text(obj.start_date);
}
}
});
返回 -
$result=mysqli_query($db,"SELECT distinct project_name,start_date FROM `projects` WHERE a.supervisor_email = '$email' and a.project_id = '$project'");
$count=mysqli_num_rows($result);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
if($count==1){
echo json_encode(array("project_name" =>$row['project_name'],
"start_date" => $start->format("d M,Y"))); }
我想要什么 - 我需要从PHP返回的另一个数组 -
$result_1=mysqli_query($db,"SELECT member_email FROM `projects` WHERE a.supervisor_email
$email' and a.project_id = '$project'");
$row_1=mysqli_fetch_array($result,MYSQLI_ASSOC);
所以最终的回声应该是
if($count==1){
echo json_encode(array($row_1,"project_name" =>$row['project_name'],
"start_date" => $start->format("d M,Y"))); }
我无法弄清楚如何从jQuery中读取这个内容
请注意,表I使用的是在project_id,member_email级别
答案 0 :(得分:1)
首先,将数据类型指定为json
。
这样你就不需要......
var json = data;
obj = JSON.parse(json);
..您可以直接使用数据变量。此外,根据您对AJAX数据的处理方式,最好使用.html()
代替.text()
。
关于您的原始问题,我发现您已将$row_1
添加到现有阵列,但它不会以这种方式工作。我不知道它包含什么,但似乎是一个数组。由于AJAX需要json
格式,因此您需要key=>value
对。这样怎么样?
PHP:
$json_arr = array();
while ($row_1=mysqli_fetch_array($result,MYSQLI_ASSOC)) {
$email{'member_email'] = $row_1['member_email'];
}
if($count==1){
echo json_encode(array("member_email" =>$email,
"project_name" =>$row['project_name'],
"start_date" => $start->format("d M,Y")));
}
AJAX:
$.ajax({
type: "POST",
url: "project_details.php",
data: data_string,
dataType: "json",
cache: false,
success: function(data){
if(data){
$("#member_email").text(data.member_email);
$("#project-name").text(data.project_name);
$("#start-date").text(data.start_date);
}
}
});
答案 1 :(得分:0)
当你做console.log(obj)时,你得到你想要的东西; ?
因为里面没有“project_name” 你的SQL-Select
关于jQuery ..试过$ .each?
$.each(obj, function(key, project)
{
...text(project.project_name);
});
答案 2 :(得分:0)
我不确定我的问题是否正确。但是你想让$ row_1作为额外的阵列得到回应,我是对的吗?如果是这样,试试这个:
PHP
echo json_encode( array(
"row_1" => $row_1,
"project_name" =>$row['project_name'],
"start_date" => $start->format("d M,Y")
)
);
然后在$ .ajax上 使用data.row_1,data.project_name,data.start_date来引用您的编码值
注意:我还想推荐@EternalHour说你应该使用dataType:'json'来代替更清洁的方法,而且它似乎也更容易。
请告诉我推荐的代码是否有效。如果没有,请你告诉我它带来的错误。