我使用网络服务来获取酒店的可用性,但无法让 ajax 显示多个酒店的结果。我的方法肯定是有缺陷和缓慢的 - 如何做得更好?
1) 代码(简化)在列出 6-12 家酒店的页面中为每个酒店调用:-
<script>
$(document).ready(function(){
$("#div<%=i%>").load("hotel-avail.php?id=xxyy");
});
</script>
2) hotel-avail.php?id=xxyy 使用网络服务来获取一个 PHP 数组,$result,定义 id 为 xxyy 的酒店的可用性。网页部分的内容:-
<script>
var result = JSON.parse( '<?php echo json_encode($result) ?>' );
if (result.hotels.estado == 'OK') {
document.getElementById("demo").innerHTML = "Yes";
} else {
document.getElementById("demo").innerHTML = "No";
}
</script>
Availability: <span id="demo"></span>
因此,此方法将数据注入两次到 2 个div 中,每个文件中一个。除了看起来很糟糕和不起作用之外,它一定是迭代 6-12 家酒店的最慢方式。请帮忙!
使用此代码作为参考,如果我错过了重点,请告诉我
$.ajax({
url: 'hotel-avail.php?id=xxyy',
method: 'post',
dataType: 'json',
success: function (result) {
if (result.hotels.estado == 'OK') {
document.getElementById("demo").innerHTML = "Yes";
} else {
document.getElementById("demo").innerHTML = "No";
}
}
});
这个 ajax 只适用于 jQuery。 忘了指出这一点。 您也可以更改此代码:
document.getElementById("demo").innerHTML = "Yes";
为
$("#demo").html("Yes");
如果对其他人有用,我会详细说明最终结果。遵循 @david-lavieri 的想法,此代码用于通过循环逐个检查酒店可用性,并在div0、div1 等中输入值:-
$.ajax({
type: "GET",
url: 'hotel-avail.php',
data:'querystring defining data',
success: function(data){
$("#div<%=i%>").html(data);
}
});
为了开始工作,我删除了整个脚本2)酒店可用.php(请参阅上面的初始条目),并在调用Web服务的php编码末尾替换为"echo json_encode($result);"。
这将逐个检查可用性。这可能比在一个 Web 服务调用中获取所有可用性然后更新每个div 要慢得多。 下一个项目!