Dieses Mal zeige ich Ihnen, wie Sie mit zu langen Ajax-Parametern umgehen, die nicht übermittelt werden können. Was sind die Vorsichtsmaßnahmen beim Umgang mit Ajax-Parametern, die zu lang sind und nicht übermittelt werden können? ist ein praktischer Fall, werfen wir einen Blick darauf.
Nachdem ich viele Informationen überprüft habe, wird gesagt, dass die Parameter der Get-Methode begrenzt sind, während die Länge der Parameter der Post-Methode unbegrenzt ist. Dies ist auch der Vorteil von Post gegenüber Get.
Verwenden Sie die Post-Methode in Ajax und das herkömmliche Parameterformat: param1=a1¶m2=a2. Wenn die Parameterlänge zu lang ist, ist die Übermittlung immer noch nicht erfolgreich. Zum Beispiel schreiben wir eine Ajax-Post-Anfrage oft so:
$.ajax({ type: "post", // post or get contentType:"application/json;charset=utf-8", data: “requestTag=”+tag+"&content="+content, //请求参数 url: "postMockJson", //地址 dataType: "text", error: function (err) { outLog("错误"+err); }, success: onSaveSuccess });
Bei Verwendung wie folgt stellen wir fest, dass Parameter 2: Inhalt zu viel Inhalt hat, zum Beispiel I Übergebe einen relativ großen Textinhalt, wenn ich ihn vom Hintergrunddienst erhalte (ich verwende Servlet):
String content= request.getParameter("content") ;
Der Wert des Inhalts hier ist null.
Es gibt auch eine schnelle Möglichkeit, zu überprüfen, ob die Ajax-Anfrage erfolgreich ist. Verwenden Sie zum Debuggen das F12-Entwicklertool. Nach der Ausführung des Ajax-Codes können Sie die initiierte Anfrage auf der Seite mit den Netzwerkoptionen im F12-Tool sehen . Die derzeit angezeigten angeforderten Parameter weisen Fehlermeldungen auf.
Lösung:
Es gibt eine andere Möglichkeit, das Ajax-Parameterformat zu schreiben: Parameter im JSON-Format anfordern, ich kann es so schreiben:
var param = "{requestTag:""+requestTag+"",content:""+content+""}";(ps: achten Sie auf das richtige JSON-Format)
Wenn Sie zu diesem Zeitpunkt F12 zum Debuggen verwenden, können Sie sehen, dass die Daten der angeforderten Parameter korrekt sind.
Dann stellt sich die Frage, dass der Inhalt, den ich im Servlet erhalte, immer noch null ist. ? ?
Da es sich bei dem Anforderungsparameter um einen JSON-Datenblock handelt, kann die Methode request.getParameter("content") die Daten natürlich nicht abrufen, da sie die JSON-Daten nicht für uns analysiert.
Wo sind also die Parameterdaten, die wir übergeben?
Hier kommt der entscheidende Punkt: Die Daten befinden sich alle im Anforderungsobjekt.
Dann verwenden wir die primitivste Methode, um die übertragenen Daten über die Datenflussmethode zu erhalten, wie folgt:
request.setCharacterEncoding("UTF-8"); StringBuilder sb = new StringBuilder(); try(BufferedReader reader = request.getReader();) { char[] buff = new char[1024]; int len; while((len = reader.read(buff)) != -1) { sb.append(buff,0, len); } }catch (IOException e) { e.printStackTrace(); }
Zu diesem Zeitpunkt befinden sich unsere JSON-Daten alle im sb-Objekt. Als nächstes müssen wir nur noch das JSON-Objekt analysieren:
JSONObject jobject = JSONObject.fromObject(sb.toString()); String requestTag = jobject.getString("requestTag"); String content = jobject.getString("content");
An diesem Punkt können wir den Inhalt abrufen.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Wie man mit dem domänenübergreifenden Ajax-Zugriffsfehler 501 umgeht
Verwendung von Ajax zur Verbesserung der Datenbasis auf der OA-Kontomethode des Personalsystems
Das obige ist der detaillierte Inhalt vonUmgang mit Ajax-Parametern, die zu lang sind und nicht übermittelt werden können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!