tutorial net mvc form for asp asp.net-mvc jquery-validate unobtrusive-validation jquery-1.9 jquery-1.10

asp.net-mvc - tutorial - form asp net mvc core



Error de sintaxis con parseJSON durante la validaciĆ³n discreta (2)

También tuve este problema. El problema fue que $ .parseJSON (no definido) hace que se lance una excepción y que la validación discreta estaba haciendo esa llamada. Como se indica en la respuesta aceptada, esto ya se ha solucionado.

Puede descargar la versión de Microsoft de este script que se validará correctamente sin causar una excepción en este enlace: http://ajax.aspnetcdn.com/ajax/mvc/5.1/jquery.validate.unobtrusive.min.js

Mi aplicación MVC está generando el siguiente código HTML que causa un error de sintaxis de Javascript al enviarlo (no estoy escribiendo nada en los dos cuadros de texto). Aquí está el HTML generado y el controlador de envío:

<form action="/UrIntake/Save" id="UrIntakeForm" method="post"> <input data-val="true" data-val-length="The field LastName must be a string with a maximum length of 50." data-val-length-max="50" data-val-required="The LastName field is required." id="FormSubmitter_LastName" name="FormSubmitter.LastName" type="text" value="" /> <input data-val="true" data-val-length="The field FirstName must be a string with a maximum length of 50." data-val-length-max="50" data-val-required="The FirstName field is required." id="FormSubmitter_FirstName" name="FormSubmitter.FirstName" type="text" value="" /> <div id="SubmissionButtons" class="right"> <input type="button" onclick="SubmitForm()" value="Submit" /> <input type="button" onclick="CancelForm()" value="Cancel" /> </div> </form> function SubmitForm() { $("#UrIntakeForm").valid(); . . .

Este es el código jQuery donde se produce el error de sintaxis (v1.9.0). "datos" no está definido y la línea de "retorno" es donde se produce el error:

parseJSON: function( data ) { // Attempt to parse using the native JSON parser first if ( window.JSON && window.JSON.parse ) { return window.JSON.parse( data ); }

Presumiblemente, no tengo que ingresar nada en los cuadros de texto (y luego debería aparecer el mensaje "el campo es obligatorio"). ¿Es esto lo que está causando el error? Eso no tiene sentido, pero no veo qué otra cosa podría ser.


Porque

Este es un problema con jquery.validate.unobtrusive.js en su paquete ASP.NET.MVC.

A partir de jQuery 1.9, el comportamiento de parseJSON() ha cambiado y un valor undefined se consideraría un JSON con formato incorrecto, lo que parseJSON() el error que ha especificado. Consulte la Guía de actualización de jQuery 1.9 Core para obtener más información.

Solución

Use el complemento jQuery Migrate , que entre otras cosas agrega compatibilidad con versiones anteriores a la parseJSON() jQuery parseJSON() .

EDITAR

Según el anuncio oficial en este connect.microsoft.com/VisualStudio/feedback/details/776965/… , el problema se resolvió en la última versión del marco .

Naturalmente, como señaló Andreas Larsen en los comentarios, asegúrese de borrar cualquier caché relevante, del lado del servidor y del lado del cliente, después de actualizar a la nueva versión.