需要在db中显示javascript中的数据

时间:2018-05-09 13:55:06

标签: javascript php ajax for-loop foreach

我正在使用php代码,我从输入中获取变量并使用ajax

 $.ajax({
  type: "GET",
  url: "controller/appointment/src_agenda.php",
  data: {
    function: "professional",
    variable: professional,
  },
  dataType: "html",
  fail: function( jqXHR, textStatus, errorThrown ) {
    alert(jqXHR);
  },
  error: function (jqxhr, ajaxOptions, thrownError) {
    alert(JSON.stringify(jqxhr));
    alert(jqxhr.status);
    alert(thrownError);
  },
  success: function(data){
    console.log(data);
  }
});

我在成功函数中得到一个数组:

 object(mysqli_result)#3 (5) {
   ["current_field"]=>
   int(0)
   ["field_count"]=>
   int(6)
   ["lengths"]=>
   NULL
   ["num_rows"]=>
   int(76)
   ["type"]=>
   int(0)
 }

如果我使用php foreach它会显示所有行,但我尝试了javascript data.forEach并且它说它不存在。我也尝试过(var data of data)但它会将每个角色都显示为个体。

如何在javascript中显示此查询结果中的每一行?

这是模型的代码:

 $sql = "SELECT medical_agenda_id, day, `date`, time_start, time_end, hour_status_id FROM medical_agenda WHERE hour_status_id>='0' AND professional_id='".$id."' ;";
 var_dump($sql);
 $res = $this->db->query($sql);
 return $res;

我需要将结果放在成功函数

1 个答案:

答案 0 :(得分:1)

return $res;会返回大量不需要的数据。相反,将结果集的数据放入关联数组并echo json_encode()

data_type最好是JSON而不是html。因为,这将使您获得有效负载中的最小数据量。您可以决定如何在前端展示它们。

应该是类似的事情。

while($row = mysqli_fetch_assoc($res)){//Using procedural style here
    $data[] = $row;
}

echo json_encode($data);

另外,var_dump($sql)也应该被取出。否则,它也将包含在HTTP响应中,这将使JSON字符串无效。

把所有垃圾都拿出来,

$sql = "SELECT medical_agenda_id, day, `date`, time_start, time_end, hour_status_id FROM medical_agenda WHERE hour_status_id>='0' AND professional_id='".$id."' ;";

//var_dump($sql); Take this out!

$res = $this->db->query($sql);

//return $res; Take this out! You will return the data by echoing it to the Web Server

while($row = mysqli_fetch_assoc($res)){//Using procedural style here
    $data[] = $row;
}

echo json_encode($data); //This is the output tho the client's request.

应该这样做。

这是您可以执行的 MINIMAL 以使代码正常工作。在将其投入生产之前,您需要进行许多优化。