2017-08-22 15 views
0

以下のコードは、AJAX CALLに対して400-BAD REQUESTエラーを表示しています。Spring MVC-JQuery-AJAX AjaxとSpring MVCを使用したテーブルからの単一行の更新

下のコードには、 ロールナンバー、ファーストネーム、ラストネーム、住所、編集、削除ボタンなどのすべての生徒記録が入力されています。 今は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; 
     } 
    } 

以下は、私が主な問題は、私のAJAX呼び出しであると思い、私の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>"); 
      } 
     } 
    }); 

}); 

です....私を助けてください。その2日間私は頑張っています...私は初心者です!

+0

'contentType'オプションを設定せずに試しましたか? – Taplar

+0

また、メソッド 'produce = {" application/json "}'が返されていますが、ブール値を返しています...... – Taplar

+0

私は本当に何をすべきか分かりませんか? contentTypeを削除して生成する必要がありますか?試してみる? –

答えて

0

あなたのコントローラには@RequestParamがありますが、あなたはstudentjsonを本体として本体に渡しています。 、その後、代わりに私が@RequestBody POJOClass pojoClassとrollnumberすべてのフィールド、ファーストネームにあなたのコントローラの編集方法を変更することができ要求する

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

としてデータを送信するリクエストのparamとして姓を何かを渡すには、アドレスがPOJOClass

内のプロパティでなければなりません
関連する問題