Heim > Web-Frontend > js-Tutorial > Hauptteil

Umgang mit Ajax-Parametern, die zu lang sind und nicht übermittelt werden können

php中世界最好的语言
Freigeben: 2018-04-03 09:49:39
Original
1950 Leute haben es durchsucht

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

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

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

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!