Javascript 将模型从ajax调用传递到spring控制器
我读了很多文章描述这一点,我试图使用相同的机制,但它仍然不适合我 因此,我想将对象从javascript发送到我的控制器 我的bean如下:(StudentAnswers.java) 我的具有ajax调用的javascript文件是:Javascript 将模型从ajax调用传递到spring控制器,javascript,ajax,spring-mvc,Javascript,Ajax,Spring Mvc,我读了很多文章描述这一点,我试图使用相同的机制,但它仍然不适合我 因此,我想将对象从javascript发送到我的控制器 我的bean如下:(StudentAnswers.java) 我的具有ajax调用的javascript文件是: function submitTest() { var test_id = 1; var student_id = 1; var q = []; q[0] = "question 1"; q[1] = "question 2
function submitTest()
{
var test_id = 1;
var student_id = 1;
var q = [];
q[0] = "question 1";
q[1] = "question 2";
var a = [];
a[0] = "answer 1";
a[1] = "answer 2";
var studentAnswers = {
"testId": test_id,
"studentId": student_id,
"questionIds": q,
"answerIds" : a
};
$.ajax({
type : "POST",
url : "submitTest",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
data : studentAnswers,
success : function(response) {
alert('test submitted');
},
error : function(e) {
alert('Error: ' + e);
}
});
最后,我的控制器功能是:
@RequestMapping(value={"submitTest"},method = RequestMethod.POST)
public ModelAndView submitTest(@RequestBody StudentAnswers studentAnswers)
{
...
return new ModelAndView("student/testBegin");
}
尝试将数据字符串化,如下所示:
data : JSON.stringify(studentAnswers)
谢谢你们的帮助。 我尝试使用JSON.stringify将数据从AJAX发送到Controller,但没有成功 JSON.stringify(studentAnswers) 但是,当我查看正在发送的数据并与预期的数据类型进行比较时,我发现存在类型不匹配。 因此,我将javascript对象更改为与bean相同。下面是我的对象和bean,它工作得很好 JavaScript对象:
var studentAnswers = new Object();
studentAnswers.testId = 1;
studentAnswers.studentId = 1;
studentAnswers.questionIds = new Array();
studentAnswers.questionIds[0] = "12345";
studentAnswers.answerIds =new Array();
studentAnswers.answerIds[0] = "12345";
public class StudentAnswers {
private Integer testId;
private Integer studentId;
private String[] questionIds;
private String[] answerIds;
..
//all get and set method to access this
}
@RequestMapping(value={"submitTest"},method = RequestMethod.POST)
public ModelAndView submitTest(@RequestBody StudentAnswers studentAnswers)
{
System.out.println(studentAnswers.toString());
return new ModelAndView("student/testBegin");
}
Bean:
var studentAnswers = new Object();
studentAnswers.testId = 1;
studentAnswers.studentId = 1;
studentAnswers.questionIds = new Array();
studentAnswers.questionIds[0] = "12345";
studentAnswers.answerIds =new Array();
studentAnswers.answerIds[0] = "12345";
public class StudentAnswers {
private Integer testId;
private Integer studentId;
private String[] questionIds;
private String[] answerIds;
..
//all get and set method to access this
}
@RequestMapping(value={"submitTest"},method = RequestMethod.POST)
public ModelAndView submitTest(@RequestBody StudentAnswers studentAnswers)
{
System.out.println(studentAnswers.toString());
return new ModelAndView("student/testBegin");
}
最后的AJAX调用如下所示:
$.ajax({
type : "POST",
url : "submitTest",
dataType: "json",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
data : JSON.stringify(studentAnswers),
success : function(response) {
alert('test submitted');
},
error : function(e) {
alert(e.message);
}
});
控制器功能:
var studentAnswers = new Object();
studentAnswers.testId = 1;
studentAnswers.studentId = 1;
studentAnswers.questionIds = new Array();
studentAnswers.questionIds[0] = "12345";
studentAnswers.answerIds =new Array();
studentAnswers.answerIds[0] = "12345";
public class StudentAnswers {
private Integer testId;
private Integer studentId;
private String[] questionIds;
private String[] answerIds;
..
//all get and set method to access this
}
@RequestMapping(value={"submitTest"},method = RequestMethod.POST)
public ModelAndView submitTest(@RequestBody StudentAnswers studentAnswers)
{
System.out.println(studentAnswers.toString());
return new ModelAndView("student/testBegin");
}
我尝试了此操作,但收到了错误消息:“加载资源失败:服务器响应状态为400(错误请求)”我尝试了此操作,但收到了错误消息:“加载资源失败:服务器响应状态为400(错误请求)”