Для веб-приложения с бэкэндом RESTful я отправляю некоторый json на сервер с помощью jquery $ сообщение . Теперь, к моему удивлению, json заполняется ключом параметра для данных формы запроса, а не телом запроса. Я могу придумать другие способы сделать это , но вопрос в том, почему это не работает так, как я ожидал.
На сервере я использую scalatra и печатаю некоторую информацию о запросе:
println("Request received:")
println(fromInputStream(request.getInputStream).getLines().mkString)
println("--------------")
println(request.getParameterMap.toString)
println("==============")
Теперь простой curl, который делает то, что я считаю правильным:
curl -X POST http://localhost:8080/x -H "Content-Type: application/json" -d '{"a":"b"}'
Производит:
Request received:
{"a":"b"}
-------------
{}
==============
И бит html + js для иллюстрации проблемы:
Производит:
Request received:
--------------
{{"a":"b"}=[Ljava.lang.String;@7a2897ac}
==============
Итак, если я использую $ post со строковой строкой json и обратным вызовом, я получаю все, что заполняется одним ключом параметра. Если это нормально, я хотел бы знать, почему и как я должен разгадывать это чисто на сервере. Если это не нормально, я хотел бы знать, что мне делать, чтобы получить его в теле ответа с помощью $ post.
ОБНОВЛЕНИЕ: теперь есть запрос функции для jquery для поддержки contentType в $ .post