我有一个用jQuery调用的ajax调用,如下所示:
$.ajax({
type: "POST",
url: ajaxurl,
data: data,
success: function(response){
alert(response);
}
});
我从PHP获取数据:
$data_array = get_data();
foreach($data_array as $data)
{
echo $data;
}
PHP缓慢
PHP数据函数调用很慢,因为它从数据库中获取了大量数据,可能会获取图像,进行一些json调用以及其他缓慢的操作。
当时一轮循环
因此我需要让PHP代码进行一轮,然后是Javascript,然后在循环中进行下一轮。
解决问题的方法不止一种?
可能有多种方法可以做到这一点。哪一个更喜欢?我想到了Javascript foreach-loop,JSON和全局Javascript变量。
答案 0 :(得分:2)
您可以将ajax函数中的返回类型设置为xml或json,然后以这两种类型之一返回数组。我觉得JSON是您解决方案的首选。
答案 1 :(得分:1)
我反对在数据库中存储实际图像。我更喜欢只保留一个唯一的链接,然后返回它而不是实际的图像。这样可以加快查询速度。我同意mad_programmer的观点,JSON js会优先考虑你的情况。
答案 2 :(得分:0)
您可以操纵查询以进行限制。如下所示:
var total_count = ajax_get_sql('select statement with count');
var curr_count = 0;
var set_number = 10;
var select_statement_without_limit = 'statement';
setTimeout('fetch_data()',0);
...
function fetch_data()
{
if(curr_count < total_count)
{
ajax_get_sql(select_statement_without_limit with limit appended);
curr_count = curr_count + set_number;
setTimeout('fetch_data()',0);
}
}
将所有ajax调用设置为等待响应而不是继续。我会在PHP中保留sql逻辑,但使用javascript多次查询服务器。这将阻止您的JS脚本给出长的执行错误。我还没有真正考虑到数据操作,但你可能已经弄明白了!