我需要能够将json从php传递给客户端,以便javascript可以解析代码并将其返回。目前,我一直这样做的方式是:
<?php
$mysql_query = $mysqli->query(QUERY GOES HERE);
$array - array();
while($row = $mysql_query->fetch_assoc()){
array_push($array, $row);
}
$json =json_encode($array);
?>
<!-- javascript -->
<script>
var json = <?php echo $json;?>;
//...
</script>
<!--- rest of html --->
这通常有效。但是,查询返回的行数超过100,000,并且php在创建整个数组时当前内存不足。我见过有人说使用ajax。这是唯一的方法吗?如果是这样,我将如何实施它呢?或者是否有更有效的方法将mysql数据编码为没有ajax的json?
谢谢
答案 0 :(得分:1)
既然你说你也可以发送你的数据块,这意味着你可以通过多种方式处理你的数据,我考虑这样做:
unset
先前分配的块来释放内存。像这样:
<input id="json-1" type="hidden" data-json='<?php echo json_encode($chunk[0]); ?>' />
<input id="json-2" type="hidden" data-json='<?php echo json_encode($chunk[1]); ?>' />
<input id="json-3" type="hidden" data-json='<?php echo json_encode($chunk[2]); ?>' />
是的,看起来很丑陋但考虑一些优点:
javascript处理
$(document).ready(function() {
$("input[id^='json-']").each(function() {
var json = $(this).data("json");
// process the chunkied 'json'
// remove the memory allocated (since you dont want anymore the huge data, probably)
$(this).removeData(this,"json")
});
});
答案 1 :(得分:0)
如果您想将某些内容从php
传递到javascript
,则必须使用ajax
,因为php
是服务器端而javascript
是客户端。
拥有100,000行的数组有点大,可能会导致问题。考虑将数组拆分为较小的块或限制查询。
您可以增加php
内存限制,但最好先优化阵列。
答案 2 :(得分:-2)
您不需要处理如此大量的数据。 分为几页。