Frage

Nicht wirklich der Suche nach Code-Beispiele hier, nur Konzepte.

Ich habe drei Abschnitte auf der Seite, die die JSON zurückgeben über drei separate AJAX-Aufrufe zu PHP-Skripte aktualisiert werden. Was wäre der einfachste Weg, diese drei Anrufe zu einem größeren Anruf zu kondensieren und die Antworten zurück auf dem Client in JSON erhalten? Wie würde ich die Antworten auf dem Client trennen, damit ich die Antwortdaten basierend auf manipulieren kann, welche Informationen zurückgesendet wird?

War es hilfreich?

Lösung

Ich mag Cris' Methode, aber ich denke, ein wenig Verbesserung bieten. Wie Sie bereits drei separate Einheiten haben, die Notwendigkeit für Umkodierung alles zu reduzieren, könnten Sie etwas entlang der Linien zu kombinieren Sie in einer Datei über include 'page.php' PHP tun und ein Objekt zurück über JSON Senden Eigenschaften mit dem Namen für das, was jeder von ihnen tun (können sagen "Namen", "Termine" und "fuzzyThings"). Ihre Kundennummer ein, die Anforderung senden würde dann einfach alle Argumente Ihre drei Funktionen einzeln in einer Anfrage gesendet werden. Der zurückgegebene JSON würde dann etwas sehen wie folgt aus (setzen Sie Ihre Objekte / Arrays / was auch immer in den kommentierten Bereichen):

{
    "names" : {/*stuff needed for names goes in here*/},
    "dates" : {/*stuff needed for dates goes in here*/},
    "fuzzyThings" : {/*all fuzzy things goes in here*/}
}

Wenn Sie dies auf der Client-Seite zu bekommen, wie ich jede annehmen bereits eine Funktion haben kann (oder eine Reihe von Funktionen) mit seinen Rückkehrdaten zu beschäftigen, sollten Sie in der Lage sein, sie auf diese Weise zu nennen:

function handler(retText) {
    var returnedObject = eval(retText);

    doStuffWithNames(returnedObject.names);
    doStuffWithDates(returnedObject.dates);
    playWithFuzzyThings(returnedObject.fuzzyThings);
}

Auch auf dem PHP-Ende kann man eine einheitliche PHP-Seite machen (ohne hoffentlich Umkodierung etwas) über:

<?php
    echo '{';
        echo '"names":{';
        include 'names.php';
        echo '},';

        echo '"dates":{';
        include 'dates.php';
        echo '},';

        echo '"fuzzyThings":{';
        include 'fuzzyThings.php';
        echo '}';
    echo '}';
?>

Hinweis: Sie müssen möglicherweise die 3 PHP-Seiten bearbeiten, so dass sie die $ _POST überprüfen korrekt und ohne die Funktionalität der anderen Seiten zu stören, wenn Sie nicht bereits haben, ziehe ich die Methode von if(isset($_POST['whatever'])) { ... } zu überprüfen, ob alles korrekt gesendet wurde, auf diese Weise können Sie so viele, wie Sie wollen, schließen und wenn es nichts mit einer pHP-Datei zu tun ist (dh Sie sind nicht diesen Abschnitt auf dieser Seite verwendet wird), dann wird es zurückkehren (so dass es "one-size-fits-all" Art der Sache grundsätzlich a) eine leere Eigenschaft, und Sie werden es einfach nicht.

verwenden

Hoffe, es funktioniert für ya!

Andere Tipps

Sie können Ihre JSON wie folgt formatiert werden:

"user" : [ {
    "name" : "Harry",
    "hobby" : "Skating"
}, {
    "name" : "Dave",
    "hobby" : "Scuba Diving"
} ],
"news" : [ {
    "date" : "3/13/05",
    "title" : "Blah",
    "postedby" : "Mike",
} ]

Und jetzt in Ihrer AJAX Antwort:

var data = eval('('+ xhr.responseText +')'); // Ajax response
var user = data.user[0].name; // Harry
var user2 = data.user[1].name; // Dave
var title = data.news[0].title;

Sie können eine Verwendung für Schleife die Daten zu durchlaufen. In dem obigen Beispiel sollten Sie jetzt sehen, wie Sie PHP Ihre JSON mit mehreren Kategorien zu formatieren können (Benutzer, Nachrichten, ect.) Und alles mit nur einem Anruf wieder zurück. Wenn Sie eine ausführlichere Beispiel finden Sie unter diesem Artikel möchte sowie < a href = "http://www.devarticles.com/c/a/JavaScript/AJAX-with-JSON/1/" rel = "nofollow noreferrer"> diese .

Ich glaube, Sie müssen ein JSON-Format machen nach diesen drei Abschnitte auf der Seite, ID sie so, dass nach Antwort können Sie sie auf diese Abschnitte füllen.

Ich persönlich mag die json Methode, aber wenn Sie zu json neu sind oder aus irgendwelchen Gründen der Arbeit mit ihm nicht wohl fühlen ist eine jQuery-Plugin speziell für diesen Zweck entworfen genannt jQuery Taconite Plugin

In Rails-Community gibt es eine dritte Möglichkeit, RJS genannt, die viel heißen heutzutage nicht das ist und fühlt sich ein wenig veraltet, aber immer noch seine eigenen Fans hat. Ich bin gespannt, ob jemand RJS zu PHP oder nicht portiert?

Dies ist workimg für mich
PHP-Code:

//for test
$categoryName = "category";
$idcategory = "1";

 $json = "{'productcategory':[{'categoryname':'".$categoryName."','idcategory':'".$idcategory."'}]}";           
 echo $json; 

javascript:

var str = xmlhttp.responseText.trim();
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json);
alert(obj.productcategory[0].idcategory);
alert(obj.productcategory[0].categoryname);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top