2016-05-23 12 views
0

Ich benutze formvalidation.io Plugin und ich versuche, ein Feld in der Datenbanktabelle eindeutig zu validieren. Ich habe den Vergleich gemacht, und ich gebe das Ergebnis (einzigartig oder nicht) mit Ajax zurück. Ich benutze 'Rückrufvalidator' von formvalidation plugin (http://formvalidation.io/validators/callback). Hier ist mein Code:Formvalidation Ajax kann Eigenschaft "Nachricht" von undefined nicht lesen

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

Dieser Code gibt mir einen Fehler ncaught TypeError: Cannot read property 'message' of undefined in JavaScript-Konsole. Warum kann dieser Fehler verursacht werden?

Ich weiß, es gibt eine "Remote-Validator" aus Formvalidation-Plugin zu Ajax-durch Validierung (http://formvalidation.io/validators/remote/), aber ich benutze Laravel, und ich muss senden AJAX-Header (X-CSRF-TOKEN), und die 'remote validator' kann keine ajax-Header senden.

+0

Kehren Sie { "gültig": true} oder { "gültig": false} vom Backend? – Digitlimit

+0

Ja! Ich habe versucht, {"valid": true} oder {"valid": false} zurückzugeben. –

+0

Können Sie Ihren Controller zu Ihrer Frage hinzufügen? – Digitlimit

Antwort

1

Schließlich akzeptiert die 'remote' Methode Header. Es wurde nicht in der Dokumentation angegeben. Meine Lösung war:

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

Wie dem auch sei, ich mag diese Warnung nicht in der Konsole:

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