RESTful 백엔드가있는 webapp의 경우 jquery의 $post을 사용하여 json을 서버에 게시하고 있습니다. 놀랍게도 json은 요청 본문 대신 요청의 양식 데이터에 대한 매개 변수 키에 채워집니다. 나는 약간의 other ways to do it을 생각할 수있다. 그러나 질문은 그것이 내가 예상했던대로 작동하지 않는 이유 다. 내가 scalatra를 사용하고 일부 요청 정보 인쇄 서버에서 jquery가 json을 요청 본문 대신 매개 변수 이름으로 게시하는 이유는 무엇입니까?
: 내가 생각하지 이제println("Request received:")
println(fromInputStream(request.getInputStream).getLines().mkString)
println("--------------")
println(request.getParameterMap.toString)
println("==============")
간단한 컬은 맞다 :
curl -X POST http://localhost:8080/x -H "Content-Type: application/json" -d '{"a":"b"}'
는 생산 :
Request received:
{"a":"b"}
-------------
{}
==============
을
그리고 문제를 설명하기 위해 html + js의 비트 :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<body>
<button type="button" onclick="doPost()">
POST
</button>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
function doPost() {
$.post("http://localhost:8080/x",
JSON.stringify({"a":"b"}),
function(data) {});
}
</script>
</body>
</html>
는 생산 :
Request received:
--------------
{{"a":"b"}=[Ljava.lang.String;@7a2897ac}
==============
을 그래서 캐릭터 라인 JSON 문자열 내가 단일 매개 변수 키에 박제 모든 것을 얻을 콜백으로 $ 포스트를 사용하는 경우. 이것이 정상적인 경우, 이유를 알고 싶습니다. 어떻게 서버에서이를 명확하게 풀어야하는지 알고 싶습니다. 정상적이지 않은 경우 $ post를 사용하여 응답 본문에서 가져 오기 위해해야 할 일이 무엇인지 알고 싶습니다.
UPDATE하십시오 feature request for jquery to support contentType on $.post