2016-01-29 110 views
0

我有pjax在大多数情况下工作正常,但提交表单的时候,我发现了在控制台一个奇怪的错误信息收到错误通知:PJAX与Laravel表单提交

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'); 
}) 

编辑:这里是我的形式看起来像(用刀片)

{!! 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() !!}: 
+0

您的'var形式'问题,因为它不包含任何值。 –

+0

提交的表单不是空的。已经将该表格添加到问题中以供澄清。 – TH1981

回答

0

我想通了。

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