Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将模型从ajax调用传递到spring控制器_Javascript_Ajax_Spring Mvc - Fatal编程技术网

Javascript 将模型从ajax调用传递到spring控制器

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

我读了很多文章描述这一点,我试图使用相同的机制,但它仍然不适合我

因此,我想将对象从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";
    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(错误请求)”