2016-04-23 20 views
0

Ich benutze einen Webservice, um die Verfügbarkeit von Hotels zu bekommen, kann aber nicht Ajax bekommen Ergebnisse von mehr als einem zu zeigen. Meine Methode ist definitiv fehlerhaft & langsam - wie besser zu tun?Ajax laden von PHP mit JSON Parsen

1)-Code (vereinfacht) in jedes Hotel in einer Seite mit einer Liste namens 6-12 Hotels: -

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

2) Hotel-avail.php id = xxyy eine Webservice verwendet einen PHP-Array zu bekommen? , $ Ergebnis, die Verfügbarkeit des Hotels mit ID xxyy definieren. Inhalt der HTML-Sektion: -

<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> 

so dass diese Methode spritzt Daten zweimal in 2 divs, ein in jeder Datei. Abgesehen davon, dass es schlecht aussieht und NICHT funktioniert, muss es der langsamste Weg sein, um 6-12 Hotels zu durchlaufen. Hilfe bitte!

+0

Nicht klar, wo zweites Script-Tag ist ... ist das die Antwort von 'hotel-avail.php'? Wenn ja, dass Ausgabe keinen Sinn macht, würde nur die tatsächliche JSON ausgeben und manipulieren es in HTML in Ajax Callback – charlietfl

Antwort

1

Verwenden Sie diesen Code als Referenz, wenn ich den Punkt bin fehlt, mich

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

Dieses Ajax nur mit jQuery arbeitet wissen lassen. habe vergessen, darauf hinzuweisen. Auch können Sie diesen Code ändern:

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

für

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

Sieht vielversprechend aus, funktioniert noch nicht nach Anpassung der URL. Da dies den JSON im obigen Ajax-Code (in der Hotel-Listing-Seite) verarbeitet, muss vermutlich HTML von hotel-avail.php geändert werden? Wie stelle ich sicher, dass AJAX das JSON-Array von dieser Seite bekommt? – Paul

+0

der 'dataType: 'json'' wird die JSON-Ausgabe von PHP parsen, so dass das Ergebnis bereits im Javascript geparst wird, nehme ich an, dass PHP folgendes tut: echo json_encode ($ result)' –

+0

Jetzt haben, ist' Ergebnis 'das JSON-Array in Hotel-avail.php erstellt? Erfolg: Funktion (Ergebnis) { if (result.hotels.estado == 'OK') { \t $ ("# div0") .html ("Ja"); } sonst { $ ("# div0") .html ("Nein"); } Will weiter versuchen, diese Version zu bekommen, wie auf der richtigen Spur aussieht. – Paul

0

Bei nützlich für die anderen, die ich ausführlich Endergebnis. Nach Ideen von @ david-lavieri arbeitete dieser Code für die Überprüfung Hotel Verfügbarkeit einer nach dem anderen über eine Schleife und Eingabe Wert in div0, div1 etc: -

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

Um ich das ganze Skript für 2 entfernt zu arbeiten) hotel-avail.php (siehe mein erster Eintrag oben) und ersetzt durch 'echo json_encode ($ result);' am ende der php-codierung den webservice aufrufen.

Dies prüft die Verfügbarkeit einzeln. Es ist wahrscheinlich viel langsamer, als alle Verfügbarkeiten in einem Webservice-Aufruf zu erhalten und dann jedes div zu aktualisieren. Nächstes Projekt!