Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JQuery中提交构造表单时出现错误403_Javascript_Jquery_Forms - Fatal编程技术网

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
对象。