La lecture de JQuery données envoyées à partir d'Ajax en Java Servlet
Voici mon code Ajax:
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}]
};
$.ajax({
url : "ships",
data : myJSONObject,
success : function(data){
GLOBAL.player.startShooting(data);
},
error : function(data) {
console.log("error:", data);
},
dataType : "json",
timeout : 30000,
type : "post"
});
Et voici ma Servlet Java code:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("im in PSOT");
System.out.println(request.getParameter("myJSONObject"));
StringBuilder sb = new StringBuilder();
BufferedReader br = request.getReader();
String str;
while( (str = br.readLine()) != null ){
sb.append(str);
}
System.out.println(sb.toString());
response.setContentType("application/json");
response.getWriter().write("{\"key\":\"hello\",\"key2\":\"world\"}");
}
Java servlet retourne à mon Salut objet du Monde, mais je NE peut pas lire les données en Java Servlet
La console affiche les éléments suivants:
im in PSOT
null
La dernière ligne est une chaîne vide à partir de la dernière println.
Je suis en utilisant Tomcat 7
Quelqu'un peut s'il vous plaît dites-moi ce que je fais de mal et pourquoi je ne peut pas lire les données en Java Servlet_
Essayez
getParameter
avec bindings
pas myJSONObject
qui est juste une variableOriginalL'auteur user1047833 | 2012-03-22
Vous devez vous connecter pour publier un commentaire.
Le nom du paramètre n'est pas
myJSONObject
. C'est le JS nom de la variable. Les noms des paramètres sont tous à la racine des clés qui vous avez il votre objet JSON. E. g.Vous ne devez manuellement l'analyser plus loin. Vous pouvez utiliser Google Gson pour cela.
Pourquoi la
Reader
n'a pas renvoyé de rien, c'est parce que le corps de la requête peut être lu et interprété seulement une fois. ToutgetParameter()
appel implicitement à le faire. Ainsi, lorsque vous appelezgetParameter()
avantgetReader()
, vous ne serez pas en mesure de lire le corps de la requête par leReader
(la même chose s'applique pour l'inverse!). Mais vous n'avez pas besoin de toute façon. Utilisez simplementgetParameter()
avec le bon paramètre noms.S'avère que je ne peux pas upvote à tous 🙁
Vous êtes les bienvenus. Vous ne pouvez voter que si vous avez au moins 15 réputation. Vous pouvez cependant marque la réponse acceptée. Voir aussi meta.stackexchange.com/questions/5234/...
Je suis en train de faire exactement la même chose, mais j'obtiens une exception de pointeur null, j'ai posté ma question ici : stackoverflow.com/questions/11292400/...
OriginalL'auteur BalusC
Vous ne devez manuellement l'analyser plus loin. Vous pouvez utiliser Google Gson pour cela.
Pourquoi le Lecteur n'a pas renvoyé de rien, c'est parce que le corps de la requête peut être lu et interprété qu'une seule fois. Tout getParameter() de l'appel implicitement à le faire. Ainsi, lorsque vous appelez getParameter() avant getReader(), vous ne serez pas en mesure de lire le corps de la requête par le Lecteur (la même chose s'applique pour l'inverse!). Mais vous n'avez pas besoin de toute façon. Utilisez simplement getParameter() avec le paramètre correct noms.
OriginalL'auteur Madhan G.S