Cet article vous apporte principalement une solution rapide ajax au problème des paramètres trop longs et qui ne peuvent pas être soumis avec succès. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.
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 requête de publication ajax comme celle-ci :
$.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 });
Lorsqu'il est utilisé comme ceci, nous constatons que si le paramètre 2 : le contenu contient trop de contenu, par exemple, je passe un texte relativement volumineux content, et je suis en arrière-plan. Lorsqu'il est obtenu depuis le service (j'utilise servlet) :
String content= request.getParameter("content");
La valeur du contenu ici est nul.
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 d'ajax : le paramètre de requête 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 débogage, vous pouvez voir les données de paramètre demandées sont toutes 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(); }
À ce stade, nos données json sont toutes dans le Objet sb Compris, il ne nous reste plus qu'à analyser l'objet json :
JSONObject jobject = JSONObject.fromObject(sb.toString()); String requestTag = jobject.getString("requestTag"); String content = jobject.getString("content");
À ce stade, nous pouvons obtenir le contenu.
Recommandations associées :
<.>Fichier Ajax et autres fonctions de téléchargement de paramètres
Tutoriel d'illustration de passage de paramètres JavaScript
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!