Php 向Jquery发送JSON失败

Php 向Jquery发送JSON失败,php,jquery,mysql,json,Php,Jquery,Mysql,Json,我的php/jquery脚本有问题。假设PHP脚本从MySQL数据库获取一个字段数组,然后将其解析为JSON并回显,这样我就可以在Jquery脚本中获取它 问题在于Jquery脚本没有正确地获取数据,或者没有正确地处理JSON,或者最后一种可能是我做错了什么(这可能是因为Jquery对我来说是一个新的工作领域) 我在互联网上找到了很多不同的Jquery脚本,但下面是我当前的代码: PHP: <?php include("../../config.php"); $roo

我的php/jquery脚本有问题。假设PHP脚本从MySQL数据库获取一个字段数组,然后将其解析为JSON并回显,这样我就可以在Jquery脚本中获取它

问题在于Jquery脚本没有正确地获取数据,或者没有正确地处理JSON,或者最后一种可能是我做错了什么(这可能是因为Jquery对我来说是一个新的工作领域)

我在互联网上找到了很多不同的Jquery脚本,但下面是我当前的代码:

PHP:

<?php 
     include("../../config.php");
     $roomId = $_POST['roomId'];

     $data = mysql_query("SELECT field FROM fields WHERE room = '$roomId' 
        AND value = 1 AND TYPE = ''") or die(mysql_error());

    while ($users = mysql_fetch_array($data)) {
        echo json_encode($users);
    }
?>
function UpdateRoom() {
    var data = 'roomId='+roomId;

    $.ajax({
        type: "POST",  
        url: "chatfunctions/getplacementfield.php",
        dataType: 'json',
        data: data,
        success: function(data){
            var arrayValues = $.parseJSON(data);
            $.each(arrayValues, function() {
                $('#f' + parseInt(arrayValues.field).append('<div id="user" />');
             });
        }
    }); 
}
$(function(){

    $.getJSON("userinfo.php",function(data)
    {
    $.each(data, function(i,data){
    var jsondata ="<li>Name : "+data.fname+" "+data.lname+"</li>";
    $(jsondata).appendTo("ol#userlist");
        });
        });
    });
尝试设置

header('Content-type: application/json');
在回显json数据之前


您还应该删除这一行,var arrayValues=$.parseJSON(数据);并将数据传递给每个函数。console.log(数据)来检查它的用户数组。

试试这个,我希望你能从这个例子中得到一个想法-

PHP:

<?php

  $con = mysql_connect("localhost","root","");
  $dbs = mysql_select_db("rs", $con);

  $result = mysql_query("SELECT * FROM profile") or die(mysql_error()); 
  $json = array(); 
  while ($row = mysql_fetch_assoc($result)) { 
  $json[] = $row;
  }

  print json_encode($json);   
  exit;

?>

Jquery:

<?php 
     include("../../config.php");
     $roomId = $_POST['roomId'];

     $data = mysql_query("SELECT field FROM fields WHERE room = '$roomId' 
        AND value = 1 AND TYPE = ''") or die(mysql_error());

    while ($users = mysql_fetch_array($data)) {
        echo json_encode($users);
    }
?>
function UpdateRoom() {
    var data = 'roomId='+roomId;

    $.ajax({
        type: "POST",  
        url: "chatfunctions/getplacementfield.php",
        dataType: 'json',
        data: data,
        success: function(data){
            var arrayValues = $.parseJSON(data);
            $.each(arrayValues, function() {
                $('#f' + parseInt(arrayValues.field).append('<div id="user" />');
             });
        }
    }); 
}
$(function(){

    $.getJSON("userinfo.php",function(data)
    {
    $.each(data, function(i,data){
    var jsondata ="<li>Name : "+data.fname+" "+data.lname+"</li>";
    $(jsondata).appendTo("ol#userlist");
        });
        });
    });
$(函数(){
$.getJSON(“userinfo.php”,函数(数据)
{
$。每个(数据,函数(i,数据){
var jsondata=“
  • 名称:”+data.fname+“+data.lname+”
  • ”; $(jsondata).appendTo(“ol#userlist”); }); }); });
    您不需要
    $.parseJSON()
    -您已经设置了
    数据类型:“json”
    ,因此jQuery在调用success函数之前会自动解析响应。如果这不起作用,那么PHP发送它的方式可能有问题。我不是PHP爱好者,但我认为
    echo-json\u-encode($users)
    是错误的,因为它回显单独的JSON片段,每行一个。在循环内部,您需要以某种方式将每一行添加到一个数组中,然后在循环结束后回显整个数组的JSON编码there@nnnnnn->好的,已经完成了,数据现在位于一个数组中,并已编码为json,并发送回jquery,但仍然没有结果。。嗯……你检查过html的源代码了吗,你所做的一切似乎都是附加空div(所有div都具有相同的ID…)。这是糟糕的JavaScript/PHP,因为它可能受到SQL注入攻击。未经验证,不应在SQL语句中使用从客户端传入的任何内容。另外,您传递的不是JSON,正确的JSON应该是`JSON.stringify({id:roomId});,另外,您不需要在这里使用POST请求,将其更改为GET,然后您将得到一个类似于chatfunctions/getplacementfield.php?roomId=1234的请求