我想用YAHOO API做一个小站。网站搜索结果,输出的标题名直接再进行图片搜索。2个foreach套用,实际上等于运行了1次网页搜索和10次图片搜索,这样一个过程需要很长时间。有什么方法可以分步加载吗?
我想要的效果是:打开页面后,先显示网页搜索的结果(第一个foreach可以重复2遍。一个做显示,一个做第二次搜索的关键字输入) ;然后根据图片ID号,依次逐个加载图片。    
求一个详细可行的方法,希望能得到一组推荐代码,或一个DEMO的教程。谢谢。url="http://boss.yahooapis.com/ysearch/web/v1/jquery?appid={api-id}"
      ...
      $data = json_decode($body);
      foreach ($data->ysearchresponse->resultset_web as $result){//第一个foreach
       $url1='http://boss.yahooapis.com/ysearch/images/v1/'.$result->{'title'}.'?appid={api-id}&count=1';
        ...
        $data1 = json_decode($body1);
        foreach ($data1->ysearchresponse->resultset_images as $result1){//
             $strstr=$strstr+1;
             echo '<img id="'.$strstr.'" src="'.$result1->thumbnail_url.'" />';     
        }
      }

解决方案 »

  1.   

    $body1来自哪里?另一次搜索么?不应在循环内进行从外部获取信息的行为
    代码没有什么优化的空间,而是你应该优化运行时间,把处理返回信息的代码,在第二次请求的时候来做
      

  2.   

    $body1 来自 $url1的返回参数。
    网站搜索结果,输出的标题名(10条)再次填入进图片搜索,进行二次搜索。
      

  3.   

    建议初次搜索就直接显示,二次搜索用ajax或者部分用ajax
      

  4.   

    有没有这方面的教程和实例?对AJAX不甚了解。
      

  5.   

    ajax就是页面通过js向后台请求数据,得到返回信息刷新(实际上只是替换)当前页面某个DOM元素的内容(例如div),主页面不刷新,比较适合你这种二次/多次查询CSDN有专门的ajax版,单纯例程不太容易明白,有些人家写好的较成熟的框架直接拿来用,然后边看人家代码再学习好了
      

  6.   

    有什么好的框架适合我的要求吗?对于AJAX,我简直就是小白。
    我只对jquery有研究。
      

  7.   

    我用jquery.load,虽然可以逐步加载,但是速度慢的像蜗牛。大虾们给看下,是我的代码不合理还是别的原因造成的?再参照 www.cluuz.com ,人家用 aspx + ajax,几秒钟就可以将搜索结果全部加载完毕。不相信PHP会比aspx差。继续求助。如果能在打开页面的5秒钟内,先显示出网站搜索的结果,然后再分批加载图片,最好能在10秒内。谢谢。下面是我的代码。页面a.php,执行jquery.load,逐块加载b.php里的数据
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
    </head>
    <body>
    <div id="new-nav"></div>
    <div id="new-nav1"></div>
    <div id="new-nav2"></div>
    <div id="new-nav3"></div>
    <div id="new-nav4"></div>
    <div id="new-nav5"></div>
    <div id="new-nav6"></div>
    <div id="new-nav7"></div>
    <div id="new-nav8"></div>
    <div id="new-nav9"></div>
    <div id="new-nav10"></div>
    <script type="text/javascript">
    $("#new-nav").load("b.php #title");//加载b.php里的div#title进入a.php的div#new-nav,下面依次类推
    $("#new-nav1").load("b.php #aba1");
    $("#new-nav2").load("b.php #aba2");
    $("#new-nav3").load("b.php #aba3");
    $("#new-nav4").load("b.php #aba4");
    $("#new-nav5").load("b.php #aba5");
    $("#new-nav6").load("b.php #aba6");
    $("#new-nav7").load("b.php #aba7");
    $("#new-nav8").load("b.php #aba8");
    $("#new-nav9").load("b.php #aba9");
    $("#new-nav10").load("b.php #aba10");
    </script>
    </body>
    </html>b.php,后台执行API代码
    url="http://boss.yahooapis.com/ysearch/web/v1/jquery?appid={api-id}"//网站搜索API
          ...
          $data = json_decode($body);
          echo '<div id="title">';
          foreach ($data->ysearchresponse->resultset_web as $result){
              ...
          }//第一个foreach,获得网站搜索的标题。率先输出。
          echo '</div>';     foreach ($data->ysearchresponse->resultset_web as $result){//重复第一个foreach,这次获得的网站标题,作为图片搜索的关键字。
           $url1='http://boss.yahooapis.com/ysearch/images/v1/'.$result->{'title'}.'?appid={api-id}&count=1';//图片搜索API
            ...
            $data1 = json_decode($body1);//图片搜索的json_decode
            foreach ($data1->ysearchresponse->resultset_images as $result1){//
                 $strstr=$strstr+1;
                 echo '<div id="aba'.$strstr.'">;
                 echo '<img src="'.$result1->thumbnail_url.'" />';   
                 echo '</div>';//序列化每一组图片,给予各自ID号,执行完一个,被a.php调出。
            }