따라서 jQuery Ajax docs 에 따르면 요청을 보낼 때 쿼리 문자열 형식으로 데이터를 직렬화하지만 설정 processData:false
하면 본문에서 실제 JSON을 보낼 수 있습니다. 불행히도 나는 이것이 일어나는지 먼저 결정하는 데 어려움을 겪고 있습니다. 내가 아는 것은 서버가 내가 보내는 것을 파싱하지 않는다는 것입니다.
http 클라이언트 를 사용하여 객체 literal을 게시하면 {someKey:'someData'}
작동합니다. 그러나와 함께 jQuery를 사용 data: {someKey:'someData'}
하면 실패합니다. 불행히도 Safari에서 요청을 분석하면 메시지 페이로드가 [object Object]
훌륭합니다 … 파이어 폭스에서는 게시물이 비어 있습니다 …
자바 측에서 본문 내용을 로깅 할 때 문자 그대로 [object Object]
어떻게 REAL JSON 데이터를 전송합니까?
jQuery에서 보낸 요청과 함께 요청 본문에서 JSON 데이터를 직렬화하는 Java 서비스에 경험이 있습니까?
BTW는 전체 $ .ajax 요청입니다.
$.ajax({
contentType: 'application/json',
data: {
"command": "on"
},
dataType: 'json',
success: function(data){
app.log("device control succeeded");
},
error: function(){
app.log("Device control failed");
},
processData: false,
type: 'POST',
url: '/devices/{device_id}/control'
});
답변
실제 JSON 요청은 다음과 같습니다.
data: '{"command":"on"}',
실제 JSON 문자열을 보내는 곳. 보다 일반적인 솔루션을 사용 JSON.stringify()
하려면 다음과 같이 객체를 JSON으로 직렬화하는 데 사용 하십시오.
data: JSON.stringify({ "command": "on" }),
JSON
객체 가없는 구형 브라우저를 지원하려면 json2.js 를 사용하여 추가하십시오.
현재 일어나고있는 것은 당신이 가지고 있기 때문에 processData: false
, 기본적으로 이것을 보내고 있습니다 : ({"command":"on"}).toString()
이것은 [object Object]
… 당신의 요청에서 보는 것입니다.