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。基本上归结为一个愚蠢的疏忽
我的 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。基本上归结为一个愚蠢的疏忽