it-swarm.com.de

JQuery $ .ajax () post - Daten in einem Java - Servlet

Ich möchte Daten zur Verarbeitung an ein Java-Servlet senden. Die Daten haben eine variable Länge und liegen in Schlüssel/Wert-Paaren:

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

Die Daten müssen nicht auf diese Weise formatiert werden, so habe ich sie jetzt.

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"); });

Die Funktion $.ajax() funktioniert einwandfrei, da ich eine Warnmeldung für "Save Complete" erhalte. Meine Dilemna liegt auf dem Servlet. Wie rufe ich die Daten ab? Ich habe versucht, eine HashMap wie diese zu verwenden ...

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

... aber hm erweist sich als null, was meiner Meinung nach bedeutet, dass .getParameterMap() die Schlüssel/Wert-Paare nicht findet. Wohin gehe ich falsch oder was fehlt mir?

26
iJared

Sie möchten keine Zeichenfolge, Sie möchten wirklich eine JS-Zuordnung von Schlüsselwertpaaren. ZB ändern:

 data: myDataVar.toString(),

mit: 

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 versteht solche Schlüsselwertpaare so, dass sie eine große Zeichenfolge NICHT verstehen. Es wird einfach als String übergeben.

UPDATE: Code behoben.

45
aquinas

Einfache Methode zum Senden von Daten mithilfe von Java-Skript und ajex-Aufruf.

Zuerst richtig deine Form so 

<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> 

javascript-Logikziel auf der Formular-ID #frm_details nach 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]
5
Harish Verma

Um den Wert des Servlets vom POST-Befehl zu erhalten, können Sie die Vorgehensweise wie unter diesem Beitrag beschrieben durch Verwendung von request.getParameter(key)-Format verfolgen, das den gewünschten Wert zurückgibt.

0
atjua

Momentan gehe ich einen anderen Weg als ich vorher angegeben habe. Ich habe die Art, wie ich die Daten formatiere, geändert in:

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

Auf der Serverseite verwende ich getParameterNames (), um alle Schlüssel in einem Enumerator zu platzieren und dann den Enumerator zu durchlaufen und die Schlüssel und Werte in eine HashMap zu setzen. Es sieht ungefähr so ​​aus:

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
iJared

Ich weiß nichts über Java, aber in $ .ajax, wenn Sie die Objektzuordnung übergeben (d. H. .toStrong() entfernen) und dann wie jeder andere Beitrag darauf zugreifen kann. Wie gesagt, ich weiß nicht, wie das in Java funktioniert, aber in PHP ist es wie jeder andere Beitrag nur im $_POST-Array.

0
CWSpear