JQuery $.ajax() post - data in a java servlet

ajax, hashmap, javascript, jquery

Solution

You don't want a string, you really want a JS map of key value pairs. E.g., change:

 data: myDataVar.toString(),

with:

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 understands key value pairs like that, it does NOT understand a big string. It passes it simply as a string.

UPDATE: Code fixed.

Problem

I want to send data to a java servlet for processing. The data will have a variable length and be in key/value pairs: ``` { A1984 : 1, A9873 : 5, A1674 : 2, A8724 : 1, A3574 : 3, A1165 : 5 } ``` The data doesn't need to be formated this way, it is just how I have it now. ``` 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"); }); ``` The `$.ajax()` function works fine as I do get an alert for "Save Complete". My dilemna is on the servlet. How do I retrieve the data? I tried to use a HashMap like this... ``` HashMap hm = new HashMap(); hm.putAll(request.getParameterMap()); ``` ...but `hm` turns out to be null which I am guessing means the `.getParameterMap()` isn't finding the key/value pairs. Where am I going wrong or what am I missing?

Original source

Related problems