Javascript 如何在ajax延迟对象中正确使用循环?
下面是我的脚本,它利用并行ajax请求来加速数据加载。 但是,我不知道如何在showalltutor div中追加数据 但它并没有传递给ajaxJavascript 如何在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;
$(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);
...
});