考虑到我在javascript中有一个声明为
的变量var oData = {
options: []
};
现在,我有另一个javascript变量需要将早期变量作为其参数之一。像这样,
var qData = {
vara:$("#id-box").val(),
varb: oData
};
我有一个Spring控制器,它将第二个变量作为@RequestBody param接受,控制器定义如下,
@RequestMapping(value = "url", method = RequestMethod.POST)
public
@ResponseBody
void addQData(@RequestBody AClassDTO dtoObject)
{
logger.debug("Question > " + questionData.getQuestionString());
}
我将 AClassDTO 定义如下,
public class SurveyQuestionUploadDTO {
private String vara;
private List<AnotherClassDTO> varb= new ArrayList<AnotherClassDTO>();
请注意,我没有在 varb 中传递任何数据,并且数组为空。我使用 json2.js ,因此使用 JSON.stringify(qData)来制作json格式。
以下是完整的ajax部分,
$.ajax({
type : "post",
url : "url",
data: JSON.stringify(qData),
dataType:'json',
cache : false,
beforeSend : function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
},
success : function(response) {
},
error : function(xhr) {
console.log("Sorry, there was a problem! " + xhr.status);
},
complete : function() {
console.log("Request complete");
}
});
现在遇到我的问题。如果我使用ajax调用指定内容类型,则在 beforeSend()中,我会收到 400 - 错误请求错误。
如果我没有指定内容类型,我会收到 415 - 不支持的媒体类型错误。
有谁能告诉我我做错了什么?我是ajax和json的新手。