2017-05-29 10 views
1

以下は私のhome.jspをページ私は削除のリンクをクリックしたときに私のAjaxの機能は、動作していないが、しかし、編集リンクのために働く

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 
    pageEncoding="ISO-8859-1"%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 
<html> 
 
<head> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
 
    <title>welcome</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
 
</head> 
 
<body onload="load();"> 
 
<input type="hidden" id="empId"> 
 
Name: <input type="text" id="emp_name" required="required" name="empName"><br> 
 
Address: <input type="text" id="emp_address" required="required" name="empAddress"><br> 
 
Salary: <input type="text" id="emp_salary" required="required" name="empSalary"><br> 
 
<button onclick="submit();">submit</button> 
 
<table id="table" border="1"> 
 
    <tr> 
 
     <th>Name</th> 
 
     <th>Address</th> 
 
     <th>Salary</th> 
 
     <th>edit</th> 
 
     <th>delete</th> 
 
    </tr> 
 
</table> 
 
</body> 
 
<script type="text/javascript"> 
 
    data = ""; 
 
    load = function() { 
 
     $.ajax({ 
 
      url: 'getlist', 
 
      type: 'get', 
 
      success: function (response) { 
 
       data = response.data; 
 
       $('.tr').remove(); 
 
       for (i = 0; i < response.data.length; i++) { 
 
        $("#table").append("<tr class = 'tr'> <td>" + response.data[i].empName + "</td> \t <td>" + response.data[i].empAddress + "</td> <td>" + response.data[i].empSalary + "</td> <td><a href ='#' onclick = 'edit(" + i + ");'> edit </a> </td> <td> <a href ='#' onlclick = 'deleteEmp(" + response.data[i].empId + ");'> delete </a></td></tr>") 
 
       } 
 
      } 
 
     }); 
 
    } 
 
    edit = function (index) { 
 

 
     //when we click on edit, those value should be available in our table fields. 
 
     $("#empId").val(data[index].empId); 
 
     $("#emp_name").val(data[index].empName); 
 
     $("#emp_address").val(data[index].empAddress); 
 
     $("#emp_salary").val(data[index].empSalary); 
 
    } 
 
    submit = function() { 
 
     $.ajax({ 
 
      url: "saveOrUpdate", 
 
      method: "post", 
 
      data: { 
 
       empId: $("#empId").val(), 
 
       empName: $("#emp_name").val(), 
 
       empAddress: $("#emp_address").val(), 
 
       empSalary: $("#emp_salary").val() 
 
      }, 
 
      success: function (response) { 
 
       alert(response.message); 
 
       load(); 
 
      } 
 
     }); 
 
    } 
 
    deleteEmp = function (Id) { 
 
     $.ajax({ 
 
      url: 'delete', 
 
      method: 'put', 
 
      data: {empId: Id}, 
 
      success: function (response) { 
 
       alert(response.message); 
 
       load(); 
 
      } 
 
     }); 
 
    } 
 
</script> 
 
</html>

あるアイデア私は、削除リンクをクリックしたときです、 delete関数を呼び出す必要があります。この関数は、Springコントローラクラスとやりとりすることができますが、期待通りに機能しません。 私はまた、期待どおりに動作している編集リンク(これは削除と全く同じです)を与えました。だから私は本当に混乱しており、問題をデバッグすることができません。

私はこのすべてに非常に新しく、自分で学習するので、助けが必要です。

+0

コンソールを確認してください。何かエラーが出ていますか?任意のデータを返すサーバーですか?成功メソッドに 'debugger'を置き、' response'変数の値を確認してください。また、ajax呼び出し中にエラーが発生したかどうかを知るためにajax呼び出しを使用している間は常に 'error'メソッドを使用してください。 –

+0

また、 'jqXHR.success()'、 'jqXHR.error()'、 'jqXHR.complete()'コールバックは** jQuery 1.8 **のように非推奨です。最終的に削除するためのコードを準備するには、代わりに 'jqXHR.done()'、 'jqXHR.fail()'、 'jqXHR.always()'を使います。 –

+0

'メソッド: 'put'、' ?? –

答えて

1

削除リンクのイベント名には、onlclickと入力ミスがあります。

しかし、インラインイベントバインディングを使用するのは良い方法ではありません。最初のスニペットが、そして何のインラインイベントは結合しないとだけ append()コールを使用して要素を作成します

$(document).ready(function() { 
    $("#table") 
     .on("click", ".delete-button", function() { 
      var empIp = $(this).data("empid"); 
      deleteEmp(empId); 
     }) 
     .on("click", ".edit-button", function() { 
      var index = $(this).closest("tr").index(); 
      edit(index); 
     }); 
}); 

var html = ""; 
for (i = 0; i < response.data.length; i++) { 
    html+= "<tr class = 'tr'> <td>" + response.data[i].empName + "</td> <td>" + response.data[i].empAddress + "</td> <td>" + response.data[i].empSalary + "</td> <td><a href ='#' class='edit-button'> edit </a> </td> <td> <a href ='#' class='delete-button' data-empid='" + response.data[i].empId + "'> delete </a></td></tr>"; 
} 
$("#table").append(html); 

とグローバルスコープでこれを試してみてください。

クリックイベントをテーブルにバインドします。のように、ダイナミックに行が作成された場合、イベントは毎回作成されません。 削除イベントがempIdを取得するためにデータ属性を使用し、編集イベントがtrインデックスで行のインデックスを検索します。

関連する問題