2016-06-25 5 views
-3

Ich bin ziemlich neu in PHP, so stumpft mich diese Funktionalität, ich gebe dir ein Bild für den Kontext. layout of application for reference image

So kann ich meine Datenbank abfragen und jedes Bit der Daten auf eine einzelne Variable (vielleicht nicht den besten Weg für diese Situation?) Aber ich weiß nicht, wie zu $ ​​_POST, dass die Daten (in variabler Form ... :) wahrscheinlich schlechte Idee, und ich muss die Daten als Variablen einstellen, wo immer ich mit den Formeln arbeiten und nur Informationen über Ajax senden) zurück zur angezeigten Seite (hinweis: Ich don 't Ich möchte meine Seite jemals aktualisieren müssen) Und ich sehe ein anderes Problem, und es ist aufgrund des Mangels an Wissen und google fehlgeschlagen, meine Fragen zu beantworten, wie kann ich php Run my Algorithmen und halten Sie die ursprünglichen Daten in der Seite jeder Zeit meine u Sers ändern ein Feld auf der Seite, ich will, dass sie alle auf dem Server und nicht im Browser laufen, also plane ich Ajax alle Daten einschließlich der geänderten Daten in eine PHP-Datei senden jedes Mal, wenn sie etwas ändern und es zurückgesetzt haben die Informationen auf der Seite, nachdem sie ihre Formeln ausgeführt hat. Ich habe $ _post studiert und ect erhalten und angefordert. und war nicht in der Lage, mental zu planen, wie die Übertragung von Daten am effizientesten und am einfachsten zu handhaben wäre.

Sorry für die Wanderung, ich hoffe auf einige konstruktive Kritik, Lösungen und Erklärungen zu einem Neuling bei php und danke Ihnen für jede Hilfe.

+1

Was ist Ihr * wirklich ist * Frage? –

+0

Das Lesen dieser Frage hat mich müde gemacht. Was ist die TL, DR Version ?, was fragst du hier? –

+0

Sie sagen, Sie wissen, dass Sie Ajax verwenden müssen ... also verwenden Sie Ajax. Was ist das Problem? – Quentin

Antwort

1

HALLO funktioniert es so in jQuery

$.post('url', {input}, function(data){ 

}); 

Die Javascript wird eine Web-Anfrage machen, so, wie wenn Sie URL im Browser setzen, richtig (wenn es $ .get das heißt, offensichtlich kippen wir senden posten Sie Daten über die URL der Browser-URL, Sie können jedoch ohne die Post-Daten auf die Seite gehen. Jetzt, da es AJAX ist, geht alles zurück in Daten. Es ist asynchron, was bedeutet, dass Ihre JS gewohnt für die Anforderung warten, wenn Sie zum Beispiel

$.post('url', {input}, function(data){ 

}); 
alert(data.result); 

Es wird nicht funktionieren setzen, aus 2 Gründen, ist Umfang (Daten sind eine Funktion Eingabeparameter nicht zugänglich außerhalb der Funktion). Der andere ist, dass die Warnung ausgelöst wird, bevor der Post abgeschlossen wird, obwohl er nach der $ .post-Anfrage geschrieben wurde. Aus diesem Grund müssen Sie die Daten in der Rückruffunktion verwenden.

Jetzt auf der PHP-Seite, wo immer diese URL ist, wird es gelaufen, genau wie du normalerweise dorthin gegangen bist. Im Wesentlichen gibt es keinen Unterschied zum Server seine AJAX oder eine Browser-Anfrage. Es ist wie ein Formular zu senden. Die interessanten Dinge, die Sie tun können, ist, Ihre Daten als JSON zurückzugeben. indem Sie den JSON-Header der Anwendung verwenden und in PHP json_encode() verwenden. Dies ist im Wesentlichen die JavaScript String Object Notation. (nicht sicher, ob ich mich daran erinnere), aber genau das ist es.

Es gibt keine Magie in der Anfrage. Die meisten Leute verstehen nicht wirklich, dass alles, was der Server zurückgibt, nur Text ist. Sei es eine PDF-Datei, ein JPG, eine Webseite, irgendetwas ist ihr einziger Text. Mit JSON können Sie die Struktur Ihrer Daten beibehalten, z. B. ein Array. Es ist ein spezielles Textformat, das JavaScript als Objekt und Array versteht.

Ich erklärte dies einem meiner Junior-Entwickler neulich. Wenn Sie die richtigen Header setzen, können Sie CSS-Dateien mit PHP, Bildern usw. erzeugen. Weil es alles nur Text ist. Das Internet ist sehr einfach. Sie haben nur für Anfragen und Text als Antwort bekommen und post. Das ist es zum größten Teil.

Wie dem auch sei,

Richtig, also jetzt in PHP (für ein schnelles Beispiel)

header('Content-Type: application/json'); 
    $a = array('one'=>1); 
    echo json_encode($a); 

Mit json_encode() wird es (das ist die Antwort vom Server zurückgesendet)

'{one:1}' 

Und in JS auf der Client-Seite (innerhalb der $ .post Callback) seine

data.one; 

Wir können diese data im Callback nehmen, dann können Sie einfach einige grundlegende jQuery verwenden, um die Werte von Eingaben oder Inhalt von HTML-Tags durch Ihre zurückgegebenen Daten zu ersetzen.

$('#input').val(data); 
    $('#htmlElement').text(data); // or data.one - whatever you had in php array keys. 

Sinn machen? Oben nehmen wir ein PHP-Array mit json_encode(), um es zu einem JSON-String zu machen, und dann (mit dem richtigen Header) können wir auf das normalerweise in JS unter Verwendung seiner Punktsyntax zugreifen. Denken Sie daran, was ich oben gesagt habe, dass nur Text vom Server zurückgegeben wird, deshalb müssen wir ihn in einen JSON-String konvertieren. Der Punkt in JS ist wie der -> in PHP. Sie könnten auch data['one'] verwenden, was noch mehr wie PHP ist, aber das ist technisch nicht der richtige Weg, wenn Sie wissen, was one ist.

Der Prozessablauf ist auch einfach, genau wie wir nur Post bekommen, und Text. Wir können nur Anfragen vom Client und Antworten vom Server stellen. Es geht also immer

Client Request -> Sever Response -> Client receives response. 

Wir können zum Beispiel den Client nicht vom Server anrufen.

Sever Call-> Client receives 

arbeiten Dies nicht ohne Dinge wie node.js oder Socket-Server.

Als Referenz (etwa Json Antworten)

Returning JSON from a PHP Script

+0

WOW! Ich werde nur für die Mühe aufpäppeln, die Sie in die Beantwortung dieser immer zu weit gefassten Frage gesteckt haben. Gut gemacht –

+0

War nicht viel Aufwand, es ist wie die zweite Natur zu mir an diesem Punkt. – ArtisticPhoenix

+0

Vielen Dank, Dies hat mich genug informiert, um alle meine vorhersehbaren Probleme zu überwinden. Entschuldigung wegen der Tirade, ich war irgendwie am Ende, weil ich keine Richtung hatte zu gehen. – Gdfelt

Verwandte Themen