无法将json数组从PHP返回到jQuery AJAX

问题
我正在使用带有下拉列表的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中读取它

请注意,我正在使用的表位于project_id,member_email级别

我不确定我的问题是否合适。 但是你希望将$ 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’来代替更清洁的方法,而且它似乎也更容易。

请告诉我我推荐的代码是否有效。 如果没有,请你告诉我它带来的错误。

首先,将数据类型指定为json

这样你就不需要……

 var json = data; obj = JSON.parse(json); 

..你可以直接使用数据变量。 此外,根据您使用AJAX数据所做的事情,最好使用.html()而不是.text()

关于您的原始问题,我看到您已将$row_1添加到现有arrays中,但它不会以这种方式工作。 我不知道它包含什么,但似乎是一个数组。 由于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); } } }); 

当你做console.log(obj)时,你得到你想要的东西; ?

因为SQL-Select中没有“project_name”

关于jQuery ..试过$ .each?

 $.each(obj, function(key, project) { ...text(project.project_name); });