2016-04-23 78 views
0

我使用web服务来获取酒店的可用性,但无法获取ajax以显示多个结果。我的方法肯定有瑕疵&慢 - 如何更好地做?使用json解析php的Ajax负载

1)代码(简体)要求每家酒店在一个页面上市6-12酒店 -

<script> 
$(document).ready(function(){ 
    $("#div<%=i%>").load("hotel-avail.php?id=xxyy"); 
}); 
</script> 

2)酒店 - avail.php ID = XXYY使用Web服务来得到一个PHP数组? ,$ result,用id xxyy定义酒店的可用性。 html部分的内容: -

<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家酒店的最慢的方法。请帮助!

+0

不清楚第二个脚本标签在哪里......是来自'hotel-avail.php'的响应?如果这样输出没有任何意义,只会输出实际的json并在ajax回调中将其处理为html – charlietfl

回答

1

使用此代码作为参考,如果我错过了点,让我知道

$.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"; 
     } 
    } 
}); 

这阿贾克斯只用jQuery工作。忘了指出来。你也可以更改此代码:

document.getElementById("demo").innerHTML = "Yes"; 

$("#demo").html("Yes"); 
+0

看起来很有希望,但在调整url之后仍然不起作用。由于这处理了上述ajax代码中的json(在酒店列表页面中),因此可能需要更改hotel-avail.php的html吗?如何确保Ajax从该页面获取json数组? – Paul

+0

'dataType:'json''会解析php的json输出,所以结果将在JavaScript中解析出来,我想PHP正在执行下面的'echo json_encode($ result)' –

+0

现在有这个,'result '在酒店avail.php中创建的json数组? (“#”);()#( 成功:功能(结果){ if(result.hotels.estado =='OK'){ \t $(“#div0”)。其他{ } else {(“#div0”)。html(“No”); } 将继续努力让这个版本在正确的轨道上运行。 – Paul

0

如果其他的我详细的最终结果是有用的。继@大卫 - lavieri的想法,这个代码工作用于通过循环由一个检查酒店预订一个与输入值成DIV0,DIV1等: -

$.ajax({ 
    type: "GET", 
    url: 'hotel-avail.php', 
    data:'querystring defining data', 
    success: function(data){ 
     $("#div<%=i%>").html(data); 
    } 
    }); 

去上班,我删除整个脚本2) hotel-avail.php(请参阅上面我的初始条目)并由'echo json_encode($ result)'替换''在调用web服务的php编码结束时。

这将逐个检查可用性。它可能比在一个webservice调用中获得所有可用性然后更新每个div慢得多。下一个项目!