我想将数据发送到Java Servlet进行处理。数据将具有可变长度,并且在键/值对中:
{ A1984 : 1, A9873 : 5, A1674 : 2, A8724 : 1, A3574 : 3, A1165 : 5 }
数据不需要以这种方式格式化,这就是我现在的方式。
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"); });
该$.ajax()功能工作正常,因为我确实收到“保存完成”的警报。我的困境是在servlet上。如何检索数据?我试图像这样使用HashMap …
$.ajax()
HashMap hm = new HashMap(); hm.putAll(request.getParameterMap());
…但是hm结果为空,我猜这意味着.getParameterMap()找不到键/值对。我要去哪里错了或者我想念什么?
hm
.getParameterMap()
您不需要字符串,而是确实需要键值对的JS映射。例如,更改:
data: myDataVar.toString(),
与:
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理解这样的键值对,但不理解大字符串。它只是将其作为字符串传递。
更新: 代码已修复。