Maison > interface Web > js tutoriel > le corps du texte

Comment gérer les paramètres ajax trop longs et ne pouvant pas être soumis

php中世界最好的语言
Libérer: 2018-04-03 09:49:39
original
1970 Les gens l'ont consulté

Cette fois, je vais vous montrer comment gérer les paramètres ajax qui sont trop longs et ne peuvent pas être soumis. Quelles sont les précautions lorsque vous traitez des paramètres ajax qui sont trop longs et ne peuvent pas être soumis. est un cas pratique, jetons un coup d'oeil.

Après avoir vérifié de nombreuses informations, on dit que les paramètres de la méthode get sont limités, tandis que la longueur des paramètres de la méthode post est illimitée. C'est aussi l'avantage de post par rapport à get.

Utilisez la méthode post en ajax et utilisez le format de paramètre conventionnel : param1=a1¶m2=a2. Lorsque la longueur du paramètre est trop longue, la soumission échoue toujours. Par exemple, nous écrivons souvent une post request ajax comme ceci :

$.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
});
Copier après la connexion

Lorsqu'elle est utilisée comme ceci, nous constatons que si le paramètre 2 : le contenu a trop de contenu, par exemple, je j'en transmets un contenu texte relativement volumineux, lorsque je l'obtiens du service d'arrière-plan (j'utilise servlet) :

String content= request.getParameter("content") ;

La valeur du contenu ici est nulle.

Il existe également un moyen rapide de vérifier si la requête ajax a réussi. Utilisez l'outil de développement F12 pour déboguer. Après avoir exécuté le code ajax, vous pouvez voir la requête lancée dans la page des options réseau de l'outil F12. , les paramètres demandés affichés à ce moment comportent des invites d'erreur.

Solution :

Il existe une autre façon d'écrire le format des paramètres ajax : demander les paramètres au format json, je peux l'écrire comme ceci :

var param = "{requestTag:""+requestTag+"",content:""+content+""}";(ps : faites attention au bon format json)

À ce stade, si vous utilisez F12 pour le débogage, vous pouvez voir que les données des paramètres demandés sont correctes.

Alors la question est, le contenu que je reçois dans le servlet est toujours nul. Pourquoi est-ce ? ? ?

Puisque le paramètre request est un bloc de données json, bien sûr, la méthode request.getParameter("content") ne peut pas obtenir les données car elle n'analysera pas les données json pour nous.

Alors, où sont les données de paramètres que nous transmettons ?

Voici le point clé : les données sont toutes dans l'objet de requête.

Ensuite, nous utilisons la méthode la plus primitive pour obtenir les données transférées via la méthode du flux de données, comme suit :

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();
}
Copier après la connexion

À ce stade, nos données json sont toutes dans l'objet sb, Ensuite, il nous suffit d'analyser l'objet json :

JSONObject jobject = JSONObject.fromObject(sb.toString());
String requestTag = jobject.getString("requestTag");
String content = jobject.getString("content");
Copier après la connexion

À ce stade, nous pouvons obtenir le contenu.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment gérer l'erreur 501 d'accès inter-domaines ajax

Utiliser Ajax pour augmenter la base de données sur la méthode du compte OA du système de ressources humaines

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal