Heim > Backend-Entwicklung > PHP-Tutorial > Ajax löst schnell das Problem, dass der Parameter zu lang ist und nicht erfolgreich übermittelt werden kann

Ajax löst schnell das Problem, dass der Parameter zu lang ist und nicht erfolgreich übermittelt werden kann

小云云
Freigeben: 2023-03-19 12:16:01
Original
2644 Leute haben es durchsucht

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
});
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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");
Nach dem Login kopieren

An diesem Punkt können wir den Inhalt abrufen.

Verwandte Empfehlungen:

Der Wert des Ajax-Übermittlungsparameters enthält das HTML-Tag und kann nicht erfolgreich übermittelt werden

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage