如何使用PHP格式化JSON响应

时间:2016-01-21 16:49:44

标签: javascript php jquery mysql json

我正在使用PHP并尝试使用jQuery / AJAX从MySQL数据库中获取值。

我的mysql表有四列:id,tail,cg和cw

我的php代码如下所示:

<?php

$inputvalue = $_POST;
$errors = false;
$result = false;

$mysqli = new mysqli('localhost', "root", "", "tp");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

foreach ($inputvalues as $key => $value) {
    if(isset($value) && !empty($value)) {
        $inputvalues[$key] = $mysqli->real_escape_string( $value );
    } else {
        $errors[$key] = 'The field '.$key.' is empty';
    }
 }

if( !$errors ) {
    $addresult = "
        SELECT * 
        FROM `air_cg` 
        WHERE `tail` = '" . $inputvalue['tail'] . "' 
        ORDER BY `id` DESC

    ";

     if( $result = $mysqli->query($addresult) ) {
        // collect results
        while($row = $result->fetch_all())
        {
            $returnResult = $row;
        }
    }
}

mysqli_close($mysqli);
echo json_encode(['result' => $returnResult, 'errors' => $errors]);

exit;
?>

生成的JSON具有以下格式:

{"result":[["255","Lapdogie","1","2"],["254","Lapdogie","23","234"],["253","Lapdogie","132","454"]],"errors":false}

我用于ajax函数并解析生成的JSON的javascript代码如下所示:

function getcgdata(aa){

    $.ajax({
        type: "POST",
        url: "drawchart.php",
        data: {tailnumber:taildata},
        dataType: 'json',
        cache: false,
    })
    .success(function(response) {

        $('input').removeClass('error').next('.errormessage').html('');

        if(!response.errors && response.result) {
            $.each(response.result, function( index, value) {
        var chartdata=(value);
        var cgdata =(cg.value);
        console.log(chartdata);
        console.log(cgdata);
       });

        } else {

            // append the error to the form
            $.each(response.errors, function( index, value) {
                // add error classes
                $('input[name*='+index+']').addClass('error').after('<div class="errormessage">'+value+'</div>')
            });

        }
    });
}

chartdata的控制台日志显示了这一点:     [“256”,“Lapdogie”,“232”,“333”]     [“239”,“Lapdogie”,“23”,“12”]     [“238”,“Lapdogie”,“1232”,“1232”]

cgdata的控制台日志只显示多次一个值:     232     232     232

我不确定问题是我的PHP代码还是我尝试解析JSON的方式。

2 个答案:

答案 0 :(得分:1)

我没有看到你定义cg.value ..

你使用

var cgdata =(cg.value);

但是cg是在哪里定义的?

它可能类似于chartdata [3] ..?

答案 1 :(得分:0)

Rajdeep Paul的建议在下面对我这个特殊情况起了作用:

更改

var cgdata =(cg.value); 

var cgdata = value[2];

我知道Ludovit Scholtz和Magnus Eriksson指出我的代码存在许多问题,我将在稍后阶段对其进行改进。

谢谢大家!