sourcecode

JQuery $.ajax() post - Java 서블릿의 데이터

codebag 2023. 4. 3. 21:29
반응형

JQuery $.ajax() post - Java 서블릿의 데이터

처리를 위해 자바 서블릿으로 데이터를 보내고 싶습니다.데이터는 가변 길이를 가지며 키/값 쌍에 속합니다.

{ 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()Save Complete(저장완료)라는 경고가 뜨기 때문에 기능은 정상적으로 동작합니다.내 딜레마는 서블릿에 있다.데이터를 어떻게 검색합니까?이렇게 해시맵을 사용하려고 했는데...

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

...그렇지만hm내가 추측하건대, 내가 추측하건대, null이 아닌 것으로 판명된 것은.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는 이와 같은 키 값 쌍을 인식하지만 큰 문자열은 인식하지 않습니다.그것은 그것을 단순히 문자열로 전달합니다.

업데이트: 코드가 수정되었습니다.

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> 

javascript logic target은 sumbit 뒤에 있는 폼 ID #frm_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:abc@invalid.ts

다음과 같이 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

당분간은 제가 말씀드린 것과는 다른 길을 가고 있습니다.데이터 포맷 방법을 다음과 같이 변경했습니다.

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

서버 측에서는 get Parameter Names()를 사용하여 모든 키를 Enumerator에 배치하고 Enumerator를 반복하여 키와 값을 HashMap에 배치합니다.다음과 같습니다.

Enumeration keys = request.getParameterNames(); 
HashMap map = new HashMap(); 
String key = null; 
while(keys.hasMoreElements()){ 
      key = keys.nextElement().toString(); 
      map.put(key, request.getParameter(key)); 
}

servlet에서 값을 가져오려면POST명령어를 사용하면, 이 투고에 기재되어 있는 어프로치를 따를 수 있습니다.request.getParameter(key)원하는 값을 반환하는 형식입니다.

언급URL : https://stackoverflow.com/questions/10214723/jquery-ajax-post-data-in-a-java-servlet

반응형