JQuery $ .ajax()post - java servlet中的数据

iJa*_*red 38 javascript ajax jquery hashmap

我想将数据发送到java servlet进行处理.数据的长度可变,并且是键/值对:

{ A1984 : 1, A9873 : 5, A1674 : 2, A8724 : 1, A3574 : 3, A1165 : 5 }
Run Code Online (Sandbox Code Playgroud)

数据不需要以这种方式格式化,这就是我现在拥有它的方式.

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"); });
Run Code Online (Sandbox Code Playgroud)

$.ajax()功能正常,因为我收到"保存完成"的提醒.我的困境在servlet上.如何检索数据?我试着像这样使用HashMap ......

HashMap hm = new HashMap();
hm.putAll(request.getParameterMap());
Run Code Online (Sandbox Code Playgroud)

...但hm结果是null,我猜是指.getParameterMap()没有找到键/值对.我哪里出错或者我错过了什么?

aqu*_*nas 55

你不想要一个字符串,你真的想要一个关键值对的JS映射.例如,改变:

 data: myDataVar.toString(),
Run Code Online (Sandbox Code Playgroud)

有:

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"); });
Run Code Online (Sandbox Code Playgroud)

jQuery理解这样的键值对,它不会理解大字符串.它只是作为一个字符串传递它.

更新:代码已修复.


小智 10

使用java脚本和ajex调用发送数据的简单方法.

首先,你的形式是这样的

<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> 
Run Code Online (Sandbox Code Playgroud)

在sumbit之后的表单id #frm_details上的javascript逻辑目标

$(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:abc@invalid.ts
Run Code Online (Sandbox Code Playgroud)


Er *_*ank 5

您可以使用 ajax post 作为:

 $.ajax({
   url: "url", 
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   data: JSON.stringify({ name: 'value1', email: 'value2' }),
   success: function (result) {
       // when call is sucessfull
    },
    error: function (err) {
    // check the err for error details
    }
 }); // ajax call closing
Run Code Online (Sandbox Code Playgroud)