到目前为止,我已经看到了两种格式化从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格式化在客户端完成。
或者有更好的方法吗?
答案 0 :(得分:1)
格式化应该在客户端完成,这允许您为站点的不同项目/页面重用相同的代码,服务器应该返回JSON对象。
这也节省了带宽(对于移动设备非常重要),例如,如果我们使用您的第一个解决方案并且我们有100k行,我们也会为每个行提供HTML格式,这相当于数据
此外,您还可以通过编辑页面来更改页面设计,而无需触及服务器端代码上的任何内容。