[jquery] 요청 본문에 유효한 json을 게시하는 jQuery

따라서 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]… 당신의 요청에서 보는 것입니다.


답변