Formvalidation ajax无法读取未定义的属性“message”

时间:2016-05-23 16:49:22

标签: jquery ajax laravel callback formvalidation.io

我正在使用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标头。

1 个答案:

答案 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/.