validazione jquery – addMethod / remote – messaggio di errore in risposta JSON

Sto cercando di utilizzare il metodo remoto o di aggiungere un metodo che simula il metodo remoto per poter inviare i dati inseriti a un servizio Web e ottenere una risposta JSON con lo stato di errore e il messaggio di errore.

quindi ho questa risposta JSON:

{ "isError": "true", "errorMessage": "The User Name you chose is already in use. Please enter another name." } 

Ho usato il metodo remoto per ottenere una risposta vero / falso, ma non con dati aggiuntivi.

Qualsiasi aiuto sarebbe apprezzato.

modificare

Ho provato questo, ma ovviamente non ha funzionato perché la variabile non è una variabile globale …

 $.validator.addMethod("uniqueUserName", function(value, element) { $.ajax({ type: "POST", url: "js/username.json", contentType: "application/json; charset=utf-8", dataType:"json", data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}", dataFilter: function(data) { var isError = data.isError; var uniqueError = data.errorMessage; if(isError == "true"){ return false; } } }) }, uniqueError); //this last line would typically be: }, "my error message"); 

see fiddle: http://jsfiddle.net/jasonday/fWk5u/

Ho finito per capirlo. Il successo del ritorno è quello che stavo fallendo – continuavo a tornare, restituendo true, o restituendo false – e ognuna di esse avrebbe “fallito” la convalida.

 remote: { type: "POST", url: "js/username.json", contentType: "application/json; charset=utf-8", dataType:"json", data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}", dataFilter: function(data) { var json = JSON.parse(data); if(json.isError == "true") { return "\"" + json.errorMessage + "\""; } else { return success; } } } 

Dai un’occhiata a validval .

Ho trovato abbastanza facile integrare, modificare (convalide personalizzate, avvisi personalizzati), oltre a fiddle in AJAX come qui

MODIFICARE
Allora, dove stai postando il tuo object dati? Cosa fa js / username.json ? Se pubblichi lì devi fare qualcosa lì per restituire l’object nel formato desiderato.

Quindi, se vuoi controllare l’e-mail univoca, sto postando sul server, faccio un controllo lì, costruisco un object

  object.response.success = true/false object.response.data = "some text to display" 

e quindi restituire object.response via AJAX.

Così:

  $.ajax({ async: false, type: "post", url: "somewhere_to_handle_username_check", data: data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", // AJAX OK, return true/false success: function(objResponse){ if (objResponse = "true"){ alert("success"); } else { alert("failed, username already taken"); } // AJAX Failed error: function () { alert("failed - AJAX failed"); } }); 

Di solito convalido il lato client, che è stato inserito un indirizzo e-mail (usando sopra validaval) e poi invio l’indirizzo e-mail al server per controllare il valore e build l’object risposta.

Spero che questo ti aiuti. In caso contrario, fammi sapere cosa deve fare la tua richiesta AJAX e cosa fa js / username.json.