Php 如何使用json通过ajax响应获得多个结果
我正在制作一个信息系统,我必须获取信息,这是我的代码 获取结果的ajax代码-Php 如何使用json通过ajax响应获得多个结果,php,jquery,mysql,ajax,json,Php,Jquery,Mysql,Ajax,Json,我正在制作一个信息系统,我必须获取信息,这是我的代码 获取结果的ajax代码- function fetch_conversation() { $.ajax({ type: 'post', url: 'message_function.php', data: { fetch_conversation:'conversation' }, success: function (respon
function fetch_conversation() {
$.ajax({
type: 'post',
url: 'message_function.php',
data: {
fetch_conversation:'conversation'
},
success: function (response) {
var r = $.parseJSON(response);
alert(r.nno);
alert(r.mmessage_from);
}
});
}
这是我的php代码,它获取数据并将其作为响应发送到ajax-
if(isset($_POST['fetch_conversation'])) {
$select_message=mysql_query("select no,message_from,sent_time,message_body from messages where message_to='1' and sent_time > '2014-12-02 17:43:35' union select no,message_to,sent_time,message_body from messages where message_from='1' and sent_time > '2014-12-02 17:43:35' ")or die(mysql_error());
while($row=mysql_fetch_array($select_message)) {
$nno= $row['no'];
echo json_encode($nno);
$mmessage_from=$row['message_from'];
echo json_encode($mmessage_from);
}
exit();
}
我使用的查询获取超过1行,我的问题是json无法在fetch conversation函数中返回值,如果查询仅获取1行,则json将显示所有值,并且所有警报都可见。如何使我的fetch conversation函数工作以获取超过1行并显示警报,请提供任何帮助,我们将不胜感激另外,请尝试给出跨浏览器的代码,谢谢……执行以下操作时是否获得所有结果:
console.log(r);
你可以试试
$.each(r, function(k, row) {
alert(row.nno);
alert(row.mmessage_from);
}
试试这个
function fetch_conversation()
{
$.ajax({
type: 'post',
dataType: 'json',
url: 'message_function.php',
data: {
fetch_conversation:'conversation'
},
success: function (response) {
var msg_no=response['no'];
var msg_from=response['message_from'];
alert(msg_no);
alert(msg_from);
}
});
}
还有你的php
if(isset($_POST['fetch_conversation']))
{
$select_message=mysql_query("select no,message_from,sent_time,message_body from messages where message_to='1' and sent_time > '2014-12-02 17:43:35' union select no,message_to,sent_time,message_body from messages where message_from='1' and sent_time > '2014-12-02 17:43:35' ")or die(mysql_error());
while($row=mysql_fetch_array($select_message))
{
$nno[]= $row['no'];
$mmessage_from[]=$row['message_from'];
}
$arr['no']=$nno;
$arr['message_from']=$mmessage_from;
echo json_encode($arr);
exit();
}
在Success响应中使用此代码。。
将此代码放在parsejson之后
在此处添加您的表id
#add_your_id_here
function fetch_conversation()
{
$.ajax({
type: 'post',
url: 'message_function.php',
data: {
fetch_conversation:'conversation'
},
success: function (response) {
var r = JSON.parse(response);
var text = "";
var x;
for (x in r) {
$('#add_your_id_here').append('<tr><td>'+r[x]['mmessage_from']+'</td><td>'+r[x]['no']+'</td></tr>');
}
}
});
}
#在此处添加您的id#
函数fetch_conversation()
{
$.ajax({
键入:“post”,
url:'message_function.php',
数据:{
获取对话:'conversation'
},
成功:功能(响应){
var r=JSON.parse(响应);
var text=“”;
var x;
对于(x在r中){
$(“#在此处添加您的_id”).append(“”+r[x]['mmessage_from']+“”+r[x]['no']+“”);
}
}
});
}
请尝试使用上述代码。这将为您提供由多个数组记录创建的json。在您的html代码中,请按照@Ferret的建议执行。$mmessage_from[]并将回音放在wile循环之外。我这样做,但没有任何效果。您做得不对。将两个echo放在循环外,在分配时,$nno将变成$nno[],而$mmessage_from将变成$mmessage_from[]当您在循环外时(在退出之前),您需要使用echo json_encode($nno[])打印它们;和echo json_encode($mmessage_from[]);就像@MarcoMura所说的,或者只使用一个数组,比如
$out=array(“nno”=>array(),“message\u form”=>array())
,在循环之后只使用json对其进行编码。我这样做就像你说的那样,不显示警报。它给了我未定义的值alertadddataType=json,
在ajax上,然后尝试它提醒我所有的值,但如何提取json中的值提取我放入elmentscan你给我一个例子,你需要哪种输出…?就像我想在ajax函数中获取“no”中的所有值和“message_from”中的值,这样我就可以将innerHTML提供给我的元素。你的代码不起作用,但谢谢对于您的帮助,没有错误,代码没有在具有id消息的my元素中显示任何结果
#add_your_id_here
function fetch_conversation()
{
$.ajax({
type: 'post',
url: 'message_function.php',
data: {
fetch_conversation:'conversation'
},
success: function (response) {
var r = JSON.parse(response);
var text = "";
var x;
for (x in r) {
$('#add_your_id_here').append('<tr><td>'+r[x]['mmessage_from']+'</td><td>'+r[x]['no']+'</td></tr>');
}
}
});
}
if(isset($_POST['fetch_conversation']))
{
$select_message = mysql_query("SELECT no,message_from,sent_time,message_body
FROM messages WHERE message_to='1'
AND sent_time > '2014-12-02 17:43:35'
UNION
SELECT no,message_to,sent_time,message_body
FROM messages WHERE message_from='1' AND sent_time > '2014-12-02 17:43:35' ") or die(mysql_error());
// create a result array to send response
$result = array();
while($row=mysql_fetch_array($select_message))
{
$_temp = array();
$_temp['no'] = $row['no'];
$_temp['message_from'] = $row['message_from'];
$result[] = $_temp;
unset($_temp);
}
@header("Content-Type:text/json");
echo json_encode($result);
exit;
}