インデックスのWebページに配置されたボタンでレコードを削除したいと思います。私はAJAXでjQueryを書きましたが、うまくいきません。データベースからレコードを削除するスクリプトが機能しません
ここに私のコントローラの方法です。このメソッドは、HttpGetのDeleteメソッドによって別のページで生成されたフォームを使用して呼び出すと正しく動作します。
[HttpPost]
[ActionName("Delete")]
[ValidateAntiForgeryToken]
public IActionResult DeleteConfirmed(int id)
{
var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
var training = _context.Trainings.Where(t => t.UserId == userId).FirstOrDefault(t => t.Id == id);
if (training != null && ModelState.IsValid)
{
_context.Trainings.Remove(training);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View();
}
$(document).ready(function() {
$(".js-delete").on("click", function() {
var button = $(this);
var trainingId = button.attr;
if (confirm("Are you sure you want to delete this training?")) {
$.ajax({
url: "/Training/Delete/" + trainingId,
type: "POST",
contentType: "application/json",
success: function() {
alert("ok");
},
error: function(){
alert("not ok");
}
});
}
});
});
<button data-customer-id="@training.Id" class="btn btn-link js-delete">Usuń</button>
私が今抱えていることである:ウィンドウのポップアップと私が確認した後、私は私のスクリプトによって生成されたエラーの結果を取得し、コンソールに、私は状況を持っている:400、タイプ:XHRを応答は次のとおりです。
http://localhost:6822/Training/Delete/function%20(%20name,%20value%20)%20%7Breturn%20access(%20this,%20jQuery.attr,%20name,%20value,%20arguments.length%20%3E%201%20);%7D
あなたのAJAX呼び出しとAjaxの呼び出しを行うことは、 'RedirectToAction(「インデックス」)を返すようにリダイレクトすることはできません;'意味がありません。メソッドにはモデルのパラメータがないので、 'ModelState.IsValid'は意味を持ちません(常に有効です)。 'data-customer-id'の値を設定するには' var trainingId = $(this)).data( 'customer-id'); 'で、ajaxは 'url:"/Training/Delete/"にする必要があります。 、data:{id:trainingId}、 '' contentType: "application/json"、 ' –
'を削除してください。ここでJSON形式を使用していないので、contentType: "application/json" 必要に応じて、 'dataType:" text "'と 'data:{id:trainingId}'と 'url:"/Training/Delete/"' – GauravKP
@StephenMueckeを追加してください。私はあなたのヒントに従ってコードを書いた。 ルーティングの問題があると思います(トレーニング/削除/を呼び出すので、 のようになります)。 routes.MapRoute( name: "default"、 テンプレート: "{controller =idはオプションで、MVC5のようなデフォルトプロパティで設定する方法を見つけましたが、問題はUrlParameter.Optionalが機能しないことです。 ルーティングを再設定するか、関数を別に書くべきですか? – tzu314