2016-05-23 76 views
0

我正在使用formvalidation.io插件,我試圖驗證字段在數據庫表中是唯一的。我已經完成了比較,並且使用ajax返回結果(唯一或不)。 我使用formvalidation插件中的'回調驗證器'(http://formvalidation.io/validators/callback)。 這裏是我的代碼:Formvalidation ajax無法讀取未定義的屬性'消息'

callback: { //check documento no repetido 
    message: 'Ya existe un estudiante con el mismo número de documento', 
    callback: function (value, validator, $field) { 
     var url = "documento-existe"; 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: $("#numero_documento").serialize(), 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      }, 
      success: function(data) 
      { 
       console.log(data); 
       return data; 
      } 
     }); 
    } 
} 

此代碼給了我在JavaScript控制檯錯誤ncaught TypeError: Cannot read property 'message' of undefined。 爲什麼會出現這個錯誤?我知道有一個從formvalidation插件做'遠程驗證'來做ajax通過驗證(http://formvalidation.io/validators/remote/),但我使用Laravel,我必須發送ajax頭(X-CSRF-TOKEN),並且'遠程驗證器'無法發送ajax頭文件。

+0

要退{ 「有效」:真正}或{ 「有效」:假}從後端? – Digitlimit

+0

是啊!我試過返回{「valid」:true}或{「valid」:false} –

+0

您可以將控制器添加到您的問題中 – Digitlimit

回答

1

最後'遠程'方法接受標題。它沒有在文檔中指定。 我的解決辦法是:

remote: { 
    message: 'Ya existe un estudiante con el mismo número de documento', 
    url: 'documento-existe', 
    type: 'POST', 
    data: function() { 
     return { 
      numero_documento: $("#numero_documento").val() 
     }; 
    }, 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
} 

反正,我不喜歡在控制檯這樣的警告:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.

相關問題