PHP:使用AJAX从MySQL格式化数据的方式有多少

时间:2014-06-23 00:40:48

标签: php mysql ajax

到目前为止,我已经看到了两种格式化从MySQL数据库中检索数据的方法。

两个代码的快速摘要: 当使用Ajax函数调用打开一个检索MySQL数据的php文件时,它应该处理同一个php文件中的MySQL数据还是处理从打开所述php文件的Ajax函数中的php文件返回的数据?

我认为第一种方式是我在教程中看到的最常见的方式,它看起来像这样......

PHP文件

while ($row = mysqli_fetch_row($result)){
  echo "<p class='group_name'>" . $row[0] . "</p>";
}

使用AJAX的文件

xmlhttp.onreadystatechange = function(){
 if(xmlhttp.readyState === 4 or xmlhttp.state === 200){
     document.getElementById('container').innerHTML = xmlhttp.responseText;
 }
}

或者这是另一种方式。它首先使用ajax将数据发送到文件,使用split()字符串方法,循环遍历它,再次使用split方法,然后使用HTML格式化它。

第二个PHP文件

$data = "";
while ($row = mysqli_fetch_row($result)){
  $data .= $row[0] . "|" . $row[1] . "|" . $row[2] . "||"; // adding | and || to be split later
}

使用AJAX的第二个文件

xmlhttp.onreadystatechange = function(){
 if(xmlhttp.readyState === 4 or xmlhttp.state === 200){
     var data = "";
     var data_array = xmlhttp.responseText.split('||'); 

     for(var row = 0; row < data_array.length ;row++){
        var data_row = data_array[row].split('|'); // Taking each value in the array and splitting it again, this time by |
          data = "<p class='group_name'>" + data_row[0] + "</p><span>" + data_row[1] +
        "</span>"
     }
 }
}

哪种方法更好或更快?或者没关系?第二个首先发送只有数据的responseText,所以我认为它可能会加快速度?然后HTML格式化在客户端完成。

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

格式化应该在客户端完成,这允许您为站点的不同项目/页面重用相同的代码,服务器应该返回JSON对象。

这也节省了带宽(对于移动设备非常重要),例如,如果我们使用您的第一个解决方案并且我们有100k行,我们也会为每个行提供HTML格式,这相当于数据

此外,您还可以通过编辑页面来更改页面设计,而无需触及服务器端代码上的任何内容。