【问题标题】:how to get values from php arrays using ajax如何使用ajax从php数组中获取值
【发布时间】:2022-01-13 06:43:33
【问题描述】:

我正在对 php 页面进行 ajax 调用。 php 在 2 个日期之间从数据库中进行选择。

这是php:

if(isset($_POST['fromdate'])){
         
 $fromdate = $_POST['fromdate'];
        
 $todate = $_POST['todate'];
        
 $sql = "SELECT * FROM expenses WHERE date BETWEEN '$fromdate' AND '$todate' ";
            
 $result = mysqli_query($connection, $sql);
        
 while($row = mysqli_fetch_array($result)){
            
   $data['amount'] = $row['amount'];
            
   $data['date'] = $row['date'];
            
   $data['description'] = $row['description'];
            
   }
        
   echo json_encode($data);
        
}

我的 ajax 调用如下所示:

$('#new_report').click(function() {
                    
  var fromdate = $('#fromdate').val();
    
  var todate = $('#todate').val();
    
  $.ajax({
                        
    url: 'new_report.php',
                        
    method:'POST',
                        
    dataType: 'JSON',
                        
    data: { 
                            
    'fromdate' : fromdate,
                            
    'todate' : todate
    
    },
                                
  success:function (data){
    
  }
                        
});
                    
                    
});

这在按 id 选择并且只获得一行时效果很好。我可以简单地:

success:function (data){

var amount = data.amount;

var date = data.date; //etc..

  }

但由于它是一个日期范围,并且我得到多行,我如何处理数据并将其显示在我需要的地方?我知道我可以转到一个新页面并循环浏览 php 结果,但我强迫自己使用 javascript 对象。思考这个过程的正确方法是什么?

【问题讨论】:

  • 我想知道你想如何在前端文件中显示数据
  • 您的代码对 SQL 注入开放。不确定您的问题到底是什么——您是在问如何处理具有多行的 JSON 响应?
  • PHP 每次循环都会覆盖$data 数组。它应该为每个对象创建一个包含一行的二维数组。然后你可以在 JavaScript 中循环这个数组。
  • 真的吗?有什么安全措施会干扰问题的提出?
  • $result[] = $data; 在循环中,然后在循环后 echo json_encode($result);

标签: php arrays json ajax object


【解决方案1】:

Barmar 回答了这个问题,但这里是正确的 php 代码:

 while($row = mysqli_fetch_array($result)){
        
        $results[] = $row;
        
    }
    
    echo json_encode($results);

然后,我可以在 javascript 中显示它并(希望)使用它。像这样:

success:function (data){
                        
    var text = JSON.stringify(data);
                        
    $('#view').html(text);

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多