Ajax / jQuery到PHP又回来了吗?

时间:2011-04-24 13:17:32

标签: php javascript ajax json

我有一个用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变量。

3 个答案:

答案 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脚本给出长的执行错误。我还没有真正考虑到数据操作,但你可能已经弄明白了!