我无法显示json_encode($ .each)中的数据

时间:2017-07-05 09:36:52

标签: javascript php mysql ajax

大家好,感谢您的时间。 我的问题是我无法从我的php数据库中显示json_encode但在我的chrome中显示数据。 $.each并非显示只有一个 enter image description here

enter image description here

现在是php的代码:

comment.php

$data = $_REQUEST;
$photo_id =38;//$data['photo_id_comment'];
$con = mysqli_connect('localhost','root','','gallery');

$sql  = "SELECT * FROM comments";
$sql .= " WHERE photo_id = " . $database->escape_string($photo_id);
$sql .= " ORDER  BY photo_id ASC";

$result = mysqli_query( $con,$sql);

$arr = array();
$row_count = mysqli_num_rows($result);

while ($row = mysqli_fetch_array($result)) {
    array_push($arr , $row);
}


mysqli_close($con);
echo json_encode($arr);

检索数据的ajax是:script.js

function refreshComment() {

requestData = $("#photo_id_comment").serialize();
$.ajax({
    url: "http://localhost/udemy/app_php/includes/comment.php",
    type: "get",
    data: requestData,
    dataType: "text",
    success : function (data) {
        jQuery.each(data, function(index, item) {
            //now you can access properties using dot notation
            $('#chat_box').val( $('#chat_box').val() + item.body + '\n');
            /* $('#author_comment').html(item.author);
            $('#chat_box').html(item.body);*/
        });
    },
    error: function (http, status, error) {
        alert('Some error occurred :'+error);
    }
});

    return false;
}

setInterval( refreshComment , 5000 );

未显示数据的html为:photo.php

 <div class="media">
                <a class="pull-left" href="#">
                    <img class="media-object" src="http://placehold.it/64x64" alt="">

                </a>
                <div class="media-body">
                    <h4 id="author_comment"  class="media-heading"></h4>
                    <p id="chat_box"></p>
                    <p class="text-info">This is post at: </p>
                </div>
            </div>

3 个答案:

答案 0 :(得分:1)

dataType:text更改为dataType:JSON

修改

使用此代替$.each

for(var i = 0;i < data.length ; i++)
{
/*access data as data[i].orfeas*/
}

<强> PHP

  $array = array(); 
  $i = 0;`

 foreach($res as $r){
   $array[$i] = $r;
  $i++;
 }  

header('Content-Type:Application/json');
echo json_encode($array);

EDIT2

USE Header帮助jQuery识别响应类型,然后jQuery将解析JSON,你可以使用上面提到的循环访问它

答案 1 :(得分:1)

请尝试这个,

dataType:'json' instead of dataType:'text'

并改变,

require.js

在剧本中。

答案 2 :(得分:0)

在script.js文件中

更改ajax的成功函数: -

 success : function (data) { 
    $.each($.parseJSON(data), function(key,item){
           $('#chat_box').val( $('#chat_box').val() + item.body + '\n');
      });
  }