Jquery eval ajax返回的json数据读取undefined的解决办法

发布时间:2023-12-08作者:小灵龙点击:137

问题描述:

最近在用jquery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,具体元素可以用data.name获取。可有时候又不行。直接显示undefined。这简直就是一个坑啊。

解决办法:


php代码:
<?php
$k3 = date("Y-m-d H:i:s",strtotime('-1 months'));
$k4 = date("Y-m-d H:i:s");
$data = [];
$t_str1 = [];
$t_str2 =  [];
$t_str3 =  [];
$datelist = getDateFromRange($k3,$k4);
for($i=0;$i<count($datelist);$i++)
{
    $t_date1 = $datelist[$i] . ' 00:00:00';
    $t_date2 = $datelist[$i] . ' 23:59:59';
    $order_num = OrderModel::where('order_state','=','2')->where("is_type","=",3)->where('confirm_date','between',[strtotime($t_date1),strtotime($t_date2)])->count();
    $order_price = OrderModel::where('order_state','=','2')->where("is_type","=",3)->where('confirm_date','between',[strtotime($t_date1),strtotime($t_date2)])->sum('realoil_price');
    $t_str1[] =  date('Y-m-d',strtotime($datelist[$i])) ;
    $t_str2[] = $order_num*4;
    $t_str3[] = $order_price*4;
}
$data["xAxis_date"] = $t_str1;
$data["series_date1"] = $t_str2;
$data["series_date2"] = $t_str3;
// echo json_encode(['result'=>1,'xAxis_date'=>$t_str1,'series_date1'=>$t_str2,'series_date2'=>$t_str3]);//方法二
return json_encode($data);//方法一
?>

jquery代码:
$.ajax({
  type:"POST",
  url:"{:url('chashu')}",
  cache: false,
  dataType:"json",
  data:{'stime':s_time,'etime':e_time,'washercar_id':washercar_id},
  success:function(data){
      arr=eval("("+data+")");//方法一
      console.log(arr.add);//方法一
     console.log(data.add);//方法二
   }
});
标签:Jquery,eval,ajax,json数据