Javascript 在JQuery中提交构造表单时出现错误403
我希望在单击按钮时构造并发送表单:Javascript 在JQuery中提交构造表单时出现错误403,javascript,jquery,forms,Javascript,Jquery,Forms,我希望在单击按钮时构造并发送表单: $(document).on('click', '.btn-follow', function () { let _self = this; let token = $('.token').val(); let username =$('.username').text(); let form = `<form method="post"> <input name="token" value="${token}"
$(document).on('click', '.btn-follow', function () {
let _self = this;
let token = $('.token').val();
let username =$('.username').text();
let form = `<form method="post">
<input name="token" value="${token}">
<input name="flwd" value="${username}">
</form>
`
console.log('form to submit is:', form);
$.ajax({
url: "/follow",
type: 'post',
data: form,
success: function (res) {
console.log('followed successfully', res)
},
error: console.log('an error occured')
});
});
$(文档).on('click','btn follow',函数(){
让_self=这个;
let token=$('.token').val();
让username=$('.username').text();
设形式=`
`
log('要提交的表单为:',表单);
$.ajax({
url:“/follow”,
键入:“post”,
数据:表格,
成功:功能(res){
console.log('成功跟踪',res)
},
错误:console.log('发生错误')
});
});
构建的表单记录为:
form to submit is: <form method="post">
<input name="token" value="bjT2rjk6dfefCWQ68Y31VwS8K2DHl8jYjK">
<input name="followed" value="Bob">
</form>
要提交的表单是:
然而,我得到了403
错误的响应,尽管后端可能已正确设置以处理此类POST请求
这里可能有什么问题,如何修复?尝试将代码更改为:
$.ajax({
url: "/follow",
type: 'post',
data: $(form).serialize(),
success: function (res) {
console.log('followed successfully', res)
},
error: console.log('an error occured')
});
403错误意味着服务器告诉您它理解您的请求,但出于某种原因,它不允许您检索响应。如果不知道您调用的端点的逻辑,我们无法告诉您原因。很可能存在一些不符合要求的业务逻辑。此外,非常奇怪的是,您正在HTML字符串中构建一个
表单
,并将其作为请求中的数据发送。您确定不应该发送实际的令牌
和后续值吗?@RoryMcCrossan,路线正确,我非常确定后端,但请求没有到达控制器。强制用户进行身份验证的中间件避免了这种情况。因此,请求中应该存在问题。我以前从未构造过表单,所以我想问题就出在那里。你不能序列化表单字符串,你需要将它转换为jQuery对象->使用$(表单)。序列化()
像这样格式化你的请求:很好!实际上,我以前尝试过form.serialize()
,但出现了错误。是的,因为form
是一个字符串,所以在序列化之前需要将其转换为jQuery
对象。