【问题标题】:jquery ajax get database results using php json encodejquery ajax 使用 php json 编码获取数据库结果
【发布时间】:2014-02-01 00:00:59
【问题描述】:

我有这个使用 jQuery ajax 调用的 php 代码,它查询数据库并获取结果,然后对结果进行 json 编码

//$rows is another query
foreach($rows as $row) {

    $sql = 'SELECT field1, field2 FROM table WHERE field1= :field';

    $stmt = $db->prepare($sql);
    $stmt->bindValue(':field', trim($row['field_1']));
    $stmt->execute();

    $array = $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode($array);
}

输出的json是这样的

[{"field1":"J1","field2":"0088","field3":"2928868"}][{"field1":"J2","field2":"0171","field3":"2928868"}][{"field1":"J2","field2":"0249","field3":"2928868"}]

我遇到的问题是在 Ajax 响应中处理它。我想做的是遍历每个数组/行并显示数据,但 responseText 显示错误。

我认为它应该看起来像这样,但我不确定。

[{"field1":"J1","field2":"0088","field3":"2928868"},{"field1":"J2","field2":"0171","field3":"2928868"},{"field1":"J2","field2":"0249","field3":"2928868"}]

我的问题是,我是否正确执行了 json_encode 以及如何输出每一行?

$.ajax({
    type: "POST",
    url: "check.php",
    data: { order: order },
    dataType: "json",
    cache: false,
    success: function(response) {

        if(response.length != 0) {

            //output results here
        }
        else {
            $('#foo').text('Order number not found!!');
        }

        // set the focus to the order input
        $('#order').focus().val('');
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        console.log('An Ajax error was thrown.');
        console.log(XMLHttpRequest);
        console.log(textStatus);
        console.log(errorThrown);
    }
});

【问题讨论】:

    标签: php jquery ajax json responsetext


    【解决方案1】:

    您应该对整个输出进行 JSON 编码,而不是输出每行的 json 编码版本:

    $output = array();
    
    //$rows is another query
    foreach($rows as $row) {
    
        $sql = 'SELECT field1, field2 FROM table WHERE field1= :field';
    
        $stmt = $db->prepare($sql);
        $stmt->bindValue(':field', trim($row['field_1']));
        $stmt->execute();
    
        $array = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
        $output[] = $array;
    }
    
    echo json_encode($output);
    

    回答您的问题时,要在 JavaScript 中使用 JSON,您可以将其视为对象数组。您甚至可以使用 jQuery 来帮助您通过 $.each 循环遍历结果:

        if(response.length != 0) {
    
              $.each(response, function(index, row) {
    
                  console.log(row);
                  // Access your row variables like so:
                  // row.field1, row.field2, row.field3, etc.
              }
    
        }
    

    如果您更喜欢原生循环,您可以执行以下操作:

        // Let i start at zero. If the response array length is less than i, execute the block, then increment i by 1.
        for(var i = 0; response.length < i; i += 1) {
    
        }
    

    相关问题/延伸阅读:How to parse JSON in JavaScript

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多