无法将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); });