Dieser Artikel bietet Ihnen hauptsächlich eine schnelle Ajax-Lösung für das Problem, dass Parameter zu lang sind und nicht erfolgreich übermittelt werden können. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
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. Beispielsweise schreiben wir häufig eine Ajax-Post-Anfrage wie folgt:
$.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 auf diese Weise stellen wir fest, dass ich beispielsweise einen relativ großen Text übergebe, wenn Parameter 2: Inhalt zu viel Inhalt enthält Inhalt, und ich bin im Hintergrund. Beim Abrufen vom Dienst (ich verwende Servlet):
String content= request.getParameter("content");
Der Wert des Inhalts ist hier 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 Parameterformat von Ajax zu schreiben: den Anforderungsparameter im JSON-Format, ich kann ihn so schreiben:
var param = " {requestTag: ""+requestTag+"",content:""+content+""}";
(ps: achten Sie auf das richtige JSON-Format)
Zu diesem Zeitpunkt, wenn Sie F12 verwenden, um Beim Debuggen können Sie sehen, dass die angeforderten Parameterdaten alle 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 ist 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 sind alle unsere JSON-Daten im sb object Verstanden, jetzt 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.
Verwandte Empfehlungen:
Ajax-Datei und andere Parameter-Upload-Funktionen
JavaScript-Parameterübergabe-Illustrations-Tutorial
Das obige ist der detaillierte Inhalt vonAjax löst schnell das Problem, dass der Parameter zu lang ist und nicht erfolgreich übermittelt werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!