jQuery $.ajax () post-données dans un servlet java


Je veux envoyer des données à un servlet java pour traitement. Les données auront une longueur variable et seront en paires clé / valeur:

{ A1984 : 1, A9873 : 5, A1674 : 2, A8724 : 1, A3574 : 3, A1165 : 5 }

Les données n'ont pas besoin d'être formatées de cette façon, c'est comme ça que je les ai maintenant.

var saveData = $.ajax({
      type: "POST",
      url: "someaction.do?action=saveData",
      data: myDataVar.toString(),
      dataType: "text",
      success: function(resultData){
          alert("Save Complete");
      }
});
saveData.error(function() { alert("Something went wrong"); });

La fonction $.ajax() fonctionne bien car je reçois une alerte pour "Save Complete". Mon dilemme est sur le servlet. Comment puis-je récupérer les données? J'ai essayé d'utiliser un HashMap comme celui-ci...

HashMap hm = new HashMap();
hm.putAll(request.getParameterMap());

...mais hm s'avère nul ce qui, je suppose, signifie le .getParameterMap() n'est pas de trouver les paires clé/valeur. Où vais-je mal ou ce qui me manque?

Author: Félix Gagnon-Grenier, 2012-04-18

5 answers

Vous ne voulez pas de chaîne, vous voulez vraiment une carte JS de paires clé-valeur. Par exemple, changement:

 data: myDataVar.toString(),

Avec:

var myKeyVals = { A1984 : 1, A9873 : 5, A1674 : 2, A8724 : 1, A3574 : 3, A1165 : 5 }



var saveData = $.ajax({
      type: 'POST',
      url: "someaction.do?action=saveData",
      data: myKeyVals,
      dataType: "text",
      success: function(resultData) { alert("Save Complete") }
});
saveData.error(function() { alert("Something went wrong"); });

JQuery comprend les paires clé-valeur comme ça, il ne comprend PAS une grosse chaîne. Il le passe simplement comme une chaîne.

MISE À JOUR: Code corrigé.

 38
Author: aquinas, 2013-03-27 05:04:57

Méthode simple pour envoyer des données en utilisant le script java et l'appel ajex.

D'abord à droite votre formulaire comme ceci

<form id="frm_details" method="post" name="frm_details">
<input  id="email" name="email" placeholder="Your Email id" type="text" />
    <button class="subscribe-box__btn" type="submit">Need Assistance</button>
</form> 

Cible logique Javascript sur l'id du formulaire # frm_details après sumbit

$(function(){
        $("#frm_details").on("submit", function(event) {
            event.preventDefault();

            var formData = {
                'email': $('input[name=email]').val() //for get email 
            };
            console.log(formData);

            $.ajax({
                url: "/tsmisc/api/subscribe-newsletter",
                type: "post",
                data: formData,
                success: function(d) {
                    alert(d);
                }
            });
        });
    }) 





General 
Request URL:https://test.abc
Request Method:POST
Status Code:200 
Remote Address:13.76.33.57:443

From Data
email:[email protected]
 3
Author: Harish Verma, 2017-01-18 07:55:36

Je ne connais pas Java, mais dans Java.ajax, si vous passez la carte d'objet telle quelle, (c'est-à-dire supprimer .toStrong()) et alors il est accessible comme n'importe quel post. Comme je l'ai dit, je ne sais pas comment cela fonctionne en Java, mais en PHP, c'est juste dans le tableau $_POST comme n'importe quel autre post.

 0
Author: CWSpear, 2012-04-18 17:54:59

Pour le moment, je vais dans une voie différente de celle que j'ai précédemment indiquée. J'ai changé la façon dont je formate les données en:

  &A2168=1&A1837=5&A8472=1&A1987=2

Côté serveur, j'utilise getParameterNames() pour placer toutes les clés dans un énumérateur, puis parcourir l'énumérateur et placer les clés et les valeurs dans un HashMap. Il ressemble à quelque chose comme ceci:

Enumeration keys = request.getParameterNames(); 
HashMap map = new HashMap(); 
String key = null; 
while(keys.hasMoreElements()){ 
      key = keys.nextElement().toString(); 
      map.put(key, request.getParameter(key)); 
}
 0
Author: iJared, 2012-04-19 02:00:38

Pour obtenir la valeur du servlet de la commande POST, vous pouvez suivre l'approche comme expliqué sur cet article en utilisant le format request.getParameter(key) qui retournera la valeur souhaitée.

 0
Author: atjua, 2017-05-23 12:02:26