我有一个laravel项目,管理员可以通过表单更改用户数据。我希望这个表单由ajax提交。但它没有被提交。
我有一张表格:
<form id="userData{{$loop->iteration}}" method="POST">
@csrf
<!--some inputs-->
</form>
<button id="changeUserData{{$loop->iteration}}" data-id="#userData{{$loop->iteration}}">Save</button>
JS:
$("#changeUserData{{$loop->iteration}}").click(function (e) {
var ele = $(this);
var formId = ele.attr("data-id");
console.log(formId);
$(formId).submit(function (e){
console.log("test2");
e.preventDefault();
$.ajax({
url: '{{url('changeUserData')}}',
method: "PATCH",
data: $(formId).serialize(),
success: function(){
console.log("test");
}
})
})
});
当我按下按钮时,第一个console.log会被启动,但其他什么都没有。我检查了表单id是否与表单id匹配,它确实匹配,所以我不知道出了什么问题。
问题是带有handler
参数的.submit()
不提交表单本身。它只是将一个事件处理程序绑定到表单的submit
事件。
你可以删除绑定,它应该可以工作:
$("#changeUserData{{$loop->iteration}}").click(function (e) {
var ele = $(this);
var formId = ele.attr("data-id");
console.log(formId);
$.ajax({
url: '{{url('changeUserData')}}',
method: "PATCH",
data: $(formId).serialize(),
success: function(){
console.log("test");
}
})
})