Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用json通过ajax响应获得多个结果_Php_Jquery_Mysql_Ajax_Json - Fatal编程技术网

Php 如何使用json通过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

我正在制作一个信息系统,我必须获取信息,这是我的代码

获取结果的ajax代码-

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对其进行编码。我这样做就像你说的那样,不显示警报。它给了我未定义的值alertadd
dataType=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;
 }