我正在使用formvalidation.io插件,我正在尝试验证字段在数据库表中是唯一的。我已完成比较,并且我使用ajax返回结果(唯一或不是)。 我使用formvalidation插件(http://formvalidation.io/validators/callback)中的'callback validator'。 这是我的代码:
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-through验证(http://formvalidation.io/validators/remote/),但是我正在使用Laravel,我必须发送ajax头文件(X-CSRF-TOKEN) ,'远程验证器'无法发送ajax标头。
答案 0 :(得分:1)
最后,'remote'方法接受标头。它没有在文档中指定。 我的解决方案是:
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/.