Spring MVC-JQuery-AJAX使用Ajax和Spring MVC更新表中的单行

时间:2017-08-22 17:28:22

标签: jquery ajax spring-mvc

以下代码为AJAX CALL提供了400-BAD REQUEST错误。

在下面的代码中有一个表格,我填写所有学生记录,如 带编辑和删除按钮的rollnumber,名字,姓氏和地址 现在我正在编辑EDIT按钮。

要求: - 点击编辑按钮,它应该使表格属性可用于特定行的编辑,编辑点击更新后它应该更新到数据库,并且应该再次显示表格中的不可编辑字段。 下面是我的控制器类

@RequestMapping(value="/updatetemp",method = RequestMethod.POST,produces = 
{"application/json"})  
SQLException{
@ResponseBody
  public boolean edit(@RequestParam("rollnumber") int rollnumber,
                           @RequestParam("firstname") String firstname,
                           @RequestParam("surname") String surname,
                           @RequestParam("address") String address)
                                                    throws SQLException{
        Student s = new Student();
        s.setRollnumber(rollnumber);
        s.setFirstname(firstname);
        s.setSurname(surname);
        s.setAddress(address);
        if(this.studentService.update(s)){
            return true;
        }else{
            return false;
        }
    }

以下是我的Jquery和Ajax调用代码

$(document).ready(function() {
$(document).on('click','#editlink',function(){
    var par = $(this).parent().parent();
    var tdName = par.children("td:nth-child(2)"); 
    var tdPhone = par.children("td:nth-child(3)"); 
    var tdEmail = par.children("td:nth-child(4)");
    tdName.html("<input type='text' class='firstname' 
value='"+tdName.html()+"'/>");
    tdPhone.html("<input type='text' class='lastname' 
value='"+tdPhone.html()+"'/>");
    tdEmail.html("<input type='text' class='address' 
value='"+tdEmail.html()+"'/>");
    $("#editlink").prop('disabled',true);
});

$(document).on('click','#updatelink',function(){
    var rollnumber = $(this).parent().siblings('.rollnumber').text();
    var firstname;
    var surname;
    var address;
$(this).parent().siblings("td.firstname").
find("input.firstname").each(function() {
        firstname = (this.value);
    });
    $(this).parent().siblings("td.lastname").
find("input.lastname").each(function() {
        surname = (this.value);
    });
    $(this).parent().siblings("td.address").
find("input.address").each(function() {
        address = (this.value);
    });

    var studentjson = { rollnumber: rollnumber, firstname: firstname, 
surname: surname,address: address };

    $.ajax({
        type: 'POST',
        url: 'http://localhost:8080/SpringDemo/updatetemp',
        data: studentjson,
        contentType: 'application/json; charset=utf-8',
        success: function (response) { 
            console.loge(response);
            if(response == true){
                $(this).parent().siblings("td.firstname").html("<td 
 class='firstname'>"+firstname+"</td>");
                $(this).parent().siblings("td.lastname").html("<td 
class='lastname'>"+surname+"</td>");
                $(this).parent().siblings("td.address").html("<td 
class='address'>"+address+"</td>");
            }
        }
    });

});

我认为主要的问题是我的AJAX电话....请帮助我。我已经两天努力了...我是新手!

1 个答案:

答案 0 :(得分:0)

您的控制器有@RequestParam,而您在调用中将studentjson作为正文传递。要将某些内容作为请求参数传递,请将数据作为

发送
"'http://localhost:8080/SpringDemo/updatetemp"+ "?rollnumber=" + rollnumber + "&firstname=" + firstname + "&surname=" + surname  + "&address=" + address

相反,我会要求您将控制器的编辑方法更改为@RequestBody POJOClass pojoClass,并且所有字段rollnumber,firstname,surname,address应该是POJOClass中的属性