2016-04-23 80 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慢得多。下一個項目!