Heim  >  Artikel  >  Web-Frontend  >  Ajax löst schnell das Problem zu langer Parameter, die nicht erfolgreich übermittelt werden können

Ajax löst schnell das Problem zu langer Parameter, die nicht erfolgreich übermittelt werden können

亚连
亚连Original
2018-05-23 10:35:372533Durchsuche

Jetzt bringe ich Ihnen eine Ajax-Schnelllösung für das Problem, dass Parameter zu lang sind und nicht erfolgreich übermittelt werden können. Lassen Sie mich es jetzt mit Ihnen teilen und es allen als Referenz geben.

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 wie folgt stellen wir fest, dass, wenn Parameter 2: Inhalt zu viel Inhalt hat, Was ich beispielsweise übergebe, ist ein relativ großer Textinhalt, wenn ich ihn vom Hintergrunddienst erhalte (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 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();
}

Dies Zu diesem Zeitpunkt befinden sich alle unsere JSON-Daten im sb-Objekt. Als nächstes müssen wir nur das JSON-Objekt analysieren:

JSONObject jobject = JSONObject.fromObject(sb.toString());
String requestTag = jobject.getString("requestTag");
String content = jobject.getString("content");

Hier, wir Sie können den Inhalt erhalten.

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

AjaxSubmit() sendet die Datei

Zwei Methoden für Ajax, um redundante Aktualisierungen zu lösen

Ajax-Synchronisierung und asynchrone Probleme und Lösungen

Das obige ist der detaillierte Inhalt vonAjax löst schnell das Problem zu langer Parameter, die nicht erfolgreich übermittelt werden können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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