Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ajax延迟对象中正确使用循环?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 如何在ajax延迟对象中正确使用循环?

Javascript 如何在ajax延迟对象中正确使用循环?,javascript,jquery,ajax,Javascript,Jquery,Ajax,下面是我的脚本,它利用并行ajax请求来加速数据加载。 但是,我不知道如何在showalltutor div中追加数据 但它并没有传递给ajax $(function() { var globalStore; var data; $.when( //fetch first 6 set of data $.get("../showAllTutor.php", function(data) { globalStore.data = data;

下面是我的脚本,它利用并行ajax请求来加速数据加载。 但是,我不知道如何在showalltutor div中追加数据

但它并没有传递给ajax

$(function()
{
    var globalStore;
    var data;
    $.when(
    //fetch first 6 set of data
    $.get("../showAllTutor.php", function(data) {
        globalStore.data = data;
    },'json'),

    // fetch data above 6
     $.get("../showAllTutor2.php", function(data) {
        globalStore.data = data;
    },'json')


).then(function() {

    // All is ready now, so...

     $('#showalltutor').append("<table><tr>");

    var j=0;
     for (i = 0; i < globalStore.data.length; i++) {
          j++;
          $('#showalltutor').append("<td style='padding-right:30px;' id=id_'"+ i +"'><div class='small-12 medium-12 large-10 columns result_container' id='"+globalStore.data[i].postId+"'><div class='small-12 medium-12 large-12 columns'><span class='left yellow'>"+mydate+"</span><span class='right'><span class='yellow'>RM "+globalStore.data[i].rate+"</span> hourly</span></div><div class='small-12 medium-12 large-12 columns text-center'><span class='pink'>"+globalStore.data[i].name+"</span></div><div class='small-12 medium-12 large-12 columns text-center'>Rating: <span class='green'>"+globalStore.data[i].plus+"</span> from <span class='reviews'><a id='"+globalStore.data[i].user+"' class='review'>"+globalStore.data[i].total+"reviews</a></span></div><div class='small-12 medium-12 large-12 columns text-left'>Travels from: <span class='yellow'>"+globalStore.data[i].location+"</span></div><div class='small-12 medium-12 large-12 columns'>Availability: </div><div class='small-12 medium-12 large-12 columns'><span class='session'>Morning: </span><span class='yellow'>"+globalStore.data[i].morning+"</span><span class='session'> Afternoon: </span><span class='yellow'>"+globalStore.data[i].afternoon+"</span><span class='session'> Evening: </span><span class='yellow'>"+globalStore.data[i].evening+"</span></div><div class='small-12 medium-12 large-12 columns text-left'>Contact<span class='session'>(click to show)</span>:<a href='tel:"+ globalStore.data[i].contact+"' onclick='click_log(\""+globalStore.data[i].postId+","+globalStore.data[i].subid+"\")'><span class='green contact'>"+globalStore.data[i].contact+"</span></a></div></div></td>");

     }
      $('#showalltutor').append("</table>");

});
});
PHP脚本示例,它将数据作为数组传递给要显示的ajax请求

 <?php
  $Tutor = new searchItems();
  $showAllTutor = $Tutor->showAllTutor($name);
  $json=array();
  foreach($showAllTutor as $key=>$value)
  {
      $total = $value['plus']+ $value['neg'];
     array_push($json,array("name"=>$value["name"],"subject"=>$value["subject"],"rate"=>$value['rate'],"dateposted"=>$value['dateposted'],"location"=>$value['location'],"contact"=>$value['contact'],"morning"=>$value['morning'],"afternoon"=>$value['afternoon'],"evening"=>$value['evening'],"postId"=>$value['postId'],"subid"=>$value['subid'],"total"=>$total,"plus"=>$value['plus'],"user"=>$value['user']));
  }
 echo json_encode($json);
  ?>

解析的数据作为单独的参数传递给.then函数


值得注意的是,正如您所说,这些AJAX请求是并行执行的,但是在两个请求完成之前,.then回调将不会执行。这就是$.when的工作原理,因此我不确定这将如何为您的用户提供任何速度优势。

我不确定如何使用我的示例处理此问题。。您能演示一下吗?我是否可以替换req1=../showAllTutor.php以及如何检索json数据并进行追加?数据没有传递到AJAX是什么意思?您正在声明这些请求需要JSON,因此请确保您正在发送JSON,否则请求将失败,您的.then将不会执行。简单的做法是删除结束语?>以确保返回的空格不会破坏JSON格式。在上面的示例中,可以肯定的是,您正在覆盖globalStore.data,因此它将只保存6组数据,具体取决于最后完成的数据。改用globalStore.data.pushdata。并定义globalStore.data=[]before@DrunkWolf,谢谢你,所以假设整个。当.then起作用时,我猜你的问题在于如何用所有这些实际创建一个漂亮的表?@duckwolf,不,它还没有起作用…我仍然无法在$中附加数据。然后
 <?php
  $Tutor = new searchItems();
  $showAllTutor = $Tutor->showAllTutor($name);
  $json=array();
  foreach($showAllTutor as $key=>$value)
  {
      $total = $value['plus']+ $value['neg'];
     array_push($json,array("name"=>$value["name"],"subject"=>$value["subject"],"rate"=>$value['rate'],"dateposted"=>$value['dateposted'],"location"=>$value['location'],"contact"=>$value['contact'],"morning"=>$value['morning'],"afternoon"=>$value['afternoon'],"evening"=>$value['evening'],"postId"=>$value['postId'],"subid"=>$value['subid'],"total"=>$total,"plus"=>$value['plus'],"user"=>$value['user']));
  }
 echo json_encode($json);
  ?>
$.when(
    $.get(url1,'json'),
    $.get(url2,'json'),
).then(function(resp1,resp2) {
   console.log(resp1);
   console.log(resp2);
   ...
});