Heim > Artikel > PHP-Framework > Was soll ich tun, wenn thinkphp5 post den Wert nicht abrufen kann?
thinkphp5-Beitrag kann keinen Wert erhalten, da TP5 die strpos-Funktion verwendet, um die app/json-Zeichenfolge im Inhaltstypwert des Headers zu finden. Die Lösung besteht darin, den Inhaltstypwert des Headers auf app/json zu setzen.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ThinkPHP Version 5, Dell G3-Computer.
thinkphp5 Was soll ich tun, wenn mein Beitrag keinen Wert erhält?
Lösung für das Problem, dass ThinkPHP5 die vom Client übergebenen Json-Parameter nicht empfangen kann. Ich habe in dieser Zeit einen Kurs aus dem Internet besucht und ihn besucht Noch einmal Dozent und der gesamte Prozess verlief reibungslos. In dieser Situation war das Problem, dass ich beim Testen einer bestimmten Post-Schnittstelle der API auftrat, unabhängig davon, wie ich die Anfrage gesendet habe Ich wurde immer darauf hingewiesen, dass die Parameterüberprüfung fehlgeschlagen ist. Ich habe die Methode zum Übergeben von Parametern über die Body-Tabelle und die API auf magische Weise verwendet. Es hat funktioniert, also habe ich zuvor festgestellt, dass es ein Problem mit der Json-Übertragung gab, also habe ich alle durchsucht über das Internet, aber es gab keine Lösung [aber ich habe zwei Wissenspunkte erhalten und sie am Ende des Artikels platziert].
Was das Problem von TP5 betrifft: Wenn es nicht funktioniert, kann ich nur den Quellcode überprüfen, also habe ich den Fehler Stück für Stück verfolgt und schließlich das Problem entdeckt ~Es stellt sich heraus, dass TP5 die strpos-Funktion verwendet Suchen Sie im Header nach der Zeichenfolge „app/json“ im Inhaltstypwert des Headers. Dies bedeutet, dass Sie den Inhaltstypwert des Headers auf „app/json“ festlegen müssen, da TP5 sonst nicht davon ausgeht, dass Sie einen Json-Parameter übergeben Geben Sie es an Request::post. Setzen Sie den Wert auf leer.
Zwei Wissenspunkte: Der Daten-PHP, dessen Inhaltstyp „application/json“ ist, kann nicht direkt erkannt werden, daher ist das $_POST-Array leer. Lösung: Wir müssen nur $GLOBALS['HTTP_RAW_POST_DATA'] verwenden, um die Originaldaten herauszunehmen, und sie dann mit json_dekodieren. [Mit dieser Methode müssen Sie den Wert „always_populate_raw_post_data“ in php.ini auf „On“ setzen die Originaldaten der POST-Daten. Dies ist jedoch keine superglobale Variable. Um sie in einer Funktion zu verwenden, muss sie als global deklariert werden oder stattdessen $GLOBALS['HTTP_RAW_POST_DATA'] verwendet werden. ];Das Obige löst das Problem, dass TP5 die vom Client Post übergebenen Json-Parameter nicht empfangen kann.
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn thinkphp5 post den Wert nicht abrufen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!