Einreichung von JSON-Daten mittels JQuery-ajax.post an PHP
Im senden von Daten an eine php-Datei via AJAX mit POST.
Es funktionierte nur mit der Einreichung Saiten, aber jetzt wollte ich meine JS-Objekt mit JSON und decodieren auf PHP-Seite.
In der Konsole kann ich sehen, dass meine Daten richtig abgegeben, aber auf PHP-Seite json_decode NULL zurück.
Ich habe versucht, die folgenden:
this.getAbsence = function()
{
alert(JSON.stringify(this));
jQuery.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "ajax/selectSingle.php?m=getAbsence",
data: JSON.stringify(this),
success : function(data){
alert(data);
}
});
}
PHP:
echo $_POST['data'];
echo json_decode($_POST['data']);
echo var_dump(json_decode($_POST['data']));
Und:
this.getAbsence = function()
{
alert(JSON.stringify(this));
jQuery.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "ajax/selectSingle.php?m=getAbsence",
data: {'Absence' : JSON.stringify(this)},
success : function(data){
alert(data);
}
});
}
PHP:
echo $_POST['Absence'];
echo json_decode($_POST['Absence']);
echo var_dump(json_decode($_POST['Absence']));
Die Warnung war nur zu prüfen, ist alles in Ordnung...
Und ja gewohnt string hallten, waren richtig 🙂
Es tut mir Leid, aber ich muss natürlich versuchen, diese Antworten, und alle von Ihnen waren nicht das richtige... Aber ja ich fand meine Antwort - aber ich meiner Meinung nach nicht helfen, wenn ich kommentieren, warum die Antwort hat mir nicht geholfen; wenn ich bin nicht kommentieren auf all die Menschen nicht kennen, wenn ich versuchte, Sie und wenn die richtige Antwort schon gegeben.
InformationsquelleAutor SamiSalami | 2012-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wo Sie falsch gelaufen ist in deinem code in der ersten code, den Sie müssen haben dieses:
Zitiere aus dem PHP-Handbuch
Da in Ihrem Fall, Sie sind die Vorlage eines JSON, in den Körper, die Sie haben, es zu Lesen, aus diesem Strom. Übliche Methode der
$_POST['field_name']
wird nicht funktionieren, weil die post Körper ist nicht in einem URLencoded format.Im zweiten Teil, müssen Sie verwendet haben:
UPDATE:
Wenn Anfrage hat einen Inhalt geben
application/json
, PHP nicht Parsen der Anfrage und geben Sie das JSON-Objekt in$_POST
können, müssen Sie analysiert werden, sich von der rohen HTTP-body. Den JSON-string wieder mitfile_get_contents("php://input");
.Wenn Sie müssen, dass mit
$_POST
Sie es machen würde:Und dann in PHP machen:
Wow, ich danke Ihnen sehr viel mit diesem update ist es viel verständlicher 🙂
von Ihnen positiv bewertet werden für php://input
file_get_contents("php://input"); ist die, die ich suchte. Stunden verbracht, bevor ich dieses finde
InformationsquelleAutor UltraInstinct
Einzelnen Angebote sind nicht gültig für php
json_encode
, verwenden Sie die doppelten Anführungszeichen für Feldnamen und Werte.data: {'Absence' : JSON.stringify(this)}
- hier php erhält die ganze Sache, einschließlich der "Abwesenheit", der sollte auch in Anführungszeichen, sonst ist es nicht gültig.Nein, "Abwesenheit", nicht eine Eigenschaft der angegebenen json-Objekt, ich bin nur die Adressierung mit "Abwesenheit", um es per $_POST['Abwesenheit'], es ist nicht eine Eigenschaft, so dass es nicht in Anführungszeichen
Wie ich schon sagte - Bereich, sollten die Namen auch in Anführungszeichen gesetzt. Siehe Beispiel #3: php.net/manual/en/function.json-decode.php
Ja, aber es ist nicht eine fieldname, es wird etwas vorgelegt wie: Abwesenheit = Hilfe:1, name:bla... (nur pseudo-code) und im Volltext: data: {"Abwesenheit": {"aid":1, "name": bla}}; Abwesenheit ist nicht Teil des Objekts, es ist der Vorname
InformationsquelleAutor YemSalat
Mir, wie es aussieht, sollten Sie formatieren Sie Ihre AJAX-Objekt. Die url-Eigenschaft sollte nur die URL für das Ziel-php-Datei und alle Daten, die benötigt werden, geschrieben werden sollte in der form eines query-string in die data-Eigenschaft.
Die folgenden arbeiten sollten, wie Sie erwartet:
Sollte es geben, Sie leeren Saiten, wenn Sie den Zugriff auf die
$_GET
variable auf einePOST
Anfrage. Entweder Sie verwenden die$_POST
oder die$_REQUEST
variable zum Zugriff auf die übermittelten Daten (etc).Wie ich Ihnen sagte, o versucht, den BEITRAG als gut, aber ich habe versucht, die ersten, weil, reichen Sie die Daten wie url, params, aber wie gesagt, vielleicht bin ich nur Unverständnis und die ajay post ist irgendwie ein fake "POST" 🙂
Ohh tut mir Leid, ich vermisste, dass ein Teil Ihres Kommentars. Es ist der Typ, der bestimmt, wie die Daten abruft, die in Ihr php-Skript, egal wie die
data
formatiert ist – es ist nur umgewandelt in einen query-string sowieso nach der docs.Danke, gut zu wissen 🙂
InformationsquelleAutor Flygenring
versuchen, diese
BEARBEITEN
Ich denke, wir können dies auch tun!
und in PHP
this
im Hauptteil der Funktion sollte ein Verweis auf das Objekt, auf dem die Funktion aufgerufen wurde, so dass ein Teil sollte funktionieren, auch wenn es nicht gerade schön oder lesbaren codeja, der Alarm funktioniert, aber die
this
in jQuery.ajax wird nicht die Referenz auf das Objekt, auf dem die Funktion aufgerufen wurdeEin guter Punkt, u haben, dass dies vielleicht nicht das Objekt nicht mehr, obwohl ich nicht so denken, denn ich habe gesehen, andere Beispiele, wo das war direkt verwendet. Ihre zweite Vorschläge führt zu einem Fehler in der Konsole: "too much recursion" - weiß nicht, warum, mein browser noch friert für einen moment x) der erste von print_r($_POST) ich bin immer nur "Array()" natürlich und $_POST['Daten'] ist leer :-/
sind Sie verbindlich.getAbsence der
DOM
? Wenn ja, dann die zweite option wird nicht funktionieren.Nein, ich bin nicht :-/ die Funktion Abwesenheit(){dieses.Hilfe;dies.eid;...[meine Methode]...} in einer anderen js: myAbsence = new Abwesenheit(); myAbsence.aid = 1; myAbsence.getAbsence(); - Aber irgendwie fand ich meine Antwort, aber vielleicht hilft es u oder u haben, so etwas sagen sumething wie "OMG, what are u doin?" ^^
InformationsquelleAutor Rishabh