Lösung für das Problem, dass PHP das JSON-Format nicht zurückgeben kann: 1. Ermitteln Sie die spezifische Ursache des Fehlers und führen Sie den Befehl „var a=JSON.stringify(error);alert(a);“ aus und den Code „var b= eval(“(“ + data + „)“);“ ausführen.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 8.1, DELL G3-Computer
Was soll ich tun, wenn PHP das JSON-Format nicht zurückgeben kann?
php kann das Standard-JSON-Format nicht zurückgeben: Die von $.ajax zurückgegebenen Daten können die Erfolgslösung nicht durchführen
Das Standardformat von JSON: {"key":"value"," key ": "value" }
1. Senden Sie den Code am Frontend wie folgt:
$.ajax({ type: "post", url: "index.php?m=Index&a=accessIn&act=access", async: true, data: { login_access: $('#login_access').val() }, dataType: "text", success: function (data) { if (data.codeId == "0") { alert(data.err); } else { alert(data.err); window.location.href = "index.php?m=Index&a=lockData"; } }, error:function(error){ var a=JSON.stringify(error); alert(a); }});
2. Nach der PHP-Hintergrundverarbeitung lautet der Rückkehrcode:
$res['err'] = "欢迎您"; $res['codeId'] = "1";
console.log(data), was sein kann angezeigt als: {err: „Falsches Passwort eingegeben!“, codeId: „0“}, der Codeschlüssel enthält keine doppelten Anführungszeichen und liegt im nicht standardmäßigen JSON-Format vor, was dazu führt, dass die von $.ajax zurückgegebenen Daten fehlschlagen .
Drittens lautet die Analyse wie folgt:
Bestimmen Sie die spezifische Ursache des Fehlers. Da das zurückgegebene Objektformat [Objektobjekt] ist, muss es in das Zeichenfolgenformat konvertiert werden, um den Grund schnell zu finden:
var a=JSON.stringify(error); alert(a);
Wenn das Format falsch ist. Wenn es korrekt ist, lautet der zurückgegebene Fehlercode im Wesentlichen: readyState=4, status=200.
Die erste besteht darin, den PHP-Code zu ändern und das Standard-JSON-Format direkt zurückzugeben. Aufgrund der fehlenden Formatierung des Datenvisualisierungscodes wird in diesem Beispiel die Rückkehr zum Frontend verwendet, um das Problem zu lösen : dataType: "text",
Nach der Rückkehr Das Format ist: {"err": "Falsches Passwort eingegeben!", "codeId": "0"}, führen Sie typeof() aus, es ist ersichtlich, dass es sich um ein Zeichenfolgenformat handelt , der String muss in JSON konvertiert werden und die Funktion eval wird verwendet:
eval() wird verwendet, um einen String-Ausdruck auszuführen und den Wert des Ausdrucks zurückzugeben – aus dem Anfänger-TutorialVollständige Frontend-Übermittlung und Rückgabecode:var b= eval("(" + data + ")");//一定按照该格式才是标准的JSON格式Nach dem Login kopieren
$.ajax({ type: "post", url: "index.php?m=Index&a=accessIn&act=access", async: true, data: { login_access: $('#login_access').val() }, dataType: "text", success: function (data) { var b= eval("(" + data + ")");//string 2 json if (b.codeId == "0") {//读取键值进行判断 alert(b.err); } else { alert(b.err); window.location.href = "index.php?m=Index&a=lockData";//跳转页面; } }, error:function(error){ var a=JSON.stringify(error);//解析对象为字符串,快速确定原因; alert(a); }});
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn PHP das JSON-Format nicht zurückgeben kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!