PJAX Laravel 在提交表单时收到错误通知

PJAX with Laravel getting error notice on form submission

我的 pjax 在大多数情况下都可以正常工作,但是在提交表单时,我在控制台中收到一条奇怪的错误消息:

Uncaught TypeError: Cannot read property 'tagName' of undefined

我已经追踪到 pjax.js 中的第 123 行,即:

 function handleSubmit(event, container, options) {
    options = optionsFor(container, options)

    var form = event.currentTarget

    if (form.tagName.toUpperCase() !== 'FORM') //error occurs here
        throw "$.pjax.submit requires a form element"

    var defaults = {
        type: form.method.toUpperCase(),
        url: form.action,
        container: $(form).attr('data-pjax'),
        target: form
    }

代码似乎仍能正确触发,但我想清除错误。

因此,我在此之前添加了一个 console.log(form) 以查看发生了什么,这就是我得到的:

undefined
Uncaught TypeError: Cannot read property 'tagName' of undefined
<form method="POST" ...

看起来它必须触发方法 handleSubmit() 两次,一次是空白数据,一次是表单,但我不明白为什么。这是我触发 pjax 的地方:

$(document).on('submit', 'form[data-pjax]', function(event) {
  $.pjax.submit(event, '#pjax-body');
})

编辑:这是我的表单的样子(使用 blade)

{!! Form::open( ['url'=>['users/changestatus'], 'data-pjax']) !!}
{!! csrf_field() !!}
<input type="hidden" name="id" value="{{ $user->id}}">
<input type="hidden" name="status" value="{{ $user->status }}">
<button type="submit" >Update</i></button>
{!! Form::close() !!}:

我明白了。

我提交了两次表单:一次是通过按钮,一次是通过一些 ajax 我在重构之前设置以用于 pjax。基本上归结为一个愚蠢的疏忽