validator - json vs xml
sintaxis no capturado seƱal inesperada UJSON (10)
Bueno, para todos los que realmente no pueden encontrar el error en ninguna parte de su código, ni "indefinido como se dice en el almacenamiento local ni nulo" ... simplemente comente su código y escriba otro que elimine el elemento en el almacenamiento local. Después de eso, puedes comentar o eliminar el código actual y restablecer el código anterior simplemente eliminando el comentario (si no quieres eliminar t ... si lo hiciste, puedes escribirlo de nuevo :))
LocalStorage.setItem(''Previous'' , "removeprevious");
LocalStorage.removeItem(''Previous'');
Console.log(LocalStorage.getItem(''Previous''));
La consola mostrará un valor nulo y eso ... restablecerá su código nuevamente si t no funciona, tiene errores.
¡Lo siento por mi ingles!
Recibo este error "token syntaxerror inesperado token U" cuando ejecuto mi página en Chrome. Y en Firefox me sale, "JSON.parse: carácter inesperado". Estoy devolviendo los datos json desde un archivo php y la cadena json que regresa es válida. Lo comprobé con http://jsonlint.com/ . Cualquier ayuda será apreciada, gracias.
Aquí está la cadena JSON devuelta
[
["1","Pan Africa Market","/"1521 1st Ave, Seattle, WA/"","47.608941","-122.340145","restaurant"],
["2","The Melting Pot","14 Mercer St, Seattle, WA","47.624562","-122.356442","restaurant"],
["3","Ipanema Grill","1225 1st Ave, Seattle, WA","47.606366","-122.337656","restaurant"],
["4","Sake House","230 1st Ave, Seattle, WA","47.612825","-122.34567","bar"],
["5","Crab Pot","1301 Alaskan Way, Seattle, WA","47.605961","-122.34036","restaurant"],
["6","Mexican Kitchen","2234 2nd Ave, Seattle,WA","47.613975","-122.345467","bar"],
["7","Wingdome","1416 E Olive Way, Seattle, WA","47.617215","-122.326584","bar"],
["8","Piroshky Piroshky","1908 Pike pl, Seattle, WA","47.610127","-122.342838","restaurant"]
]
Considere usar
eval("("+your_json_var+")");
Es mucho mejor que $ .parseJSON ()
El caso más común de este error es utilizar una plantilla que está generando el control y luego cambiar la manera en que se genera la id
y / o el name
al "anular" la plantilla predeterminada con algo como
@Html.TextBoxFor(m => m, new {Name = ViewData["Name"], id = ViewData["UniqueId"]} )
y luego olvidando cambiar ValidationMessageFor
a
@Html.ValidationMessageFor(m => m, null, new { data_valmsg_for = ViewData["Name"] })
Espero que esto te ahorre tiempo.
En caso de que no entendieras
por ejemplo, es decir, tengo un JSON STRING ... NO HAY UN OBJETO O ARRAY JSON.
así que si en javascript usted analiza la cadena como
var body={
"id": 1,
"deleted_at": null,
"open_order": {
"id": 16,
"status": "open"}
var jsonBody = JSON.parse(body.open_order); //HERE THE ERROR NOW APPEARS BECAUSE THE STRING IS NOT A JSON OBJECT YET!!!!
//TODO SO
var jsonBody=JSON.parse(body)//PASS THE BODY FIRST THEN LATER USE THE jsonBody to get the open_order
var OpenOrder=jsonBody.open_order;
Grandes respuestas arriba
En mi caso, estaba intentando llamar a JSON.parse () en una variable AJAX antes de que volviera el XHRResponse. P.EJ:
var response = $.get(URL that returns a valid JSON string);
var data = JSON.parse(response.responseText);
Lo reemplacé con un ejemplo del sitio jQuery por $ .get :
<script type="text/javascript">
var jqxhr = $.get( "https://jira.atlassian.com/rest/api/2/project", function() {
alert( "success" );
})
.done(function() {
//insert code to assign the projects from Jira to a div.
jqxhr = jqxhr.responseJSON;
console.log(jqxhr);
var div = document.getElementById("products");
for (i = 0; i < jqxhr.length; i++) {
console.log(jqxhr[i].name);
div.innerHTML += "<b>Product: " + jqxhr[i].name + "</b><BR/>Key: " + jqxhr[i].key + "<BR/>";
}
console.log(div);
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
// Perform other work here ...
// Set another completion function for the request above
jqxhr.always(function() {
alert( "second finished" );
});
</script>
Ese error normalmente se ve cuando el valor dado a JSON.parse
realidad undefined
está undefined
. Por lo tanto, revisaría el código que está tratando de analizar esto; lo más probable es que no esté analizando la cadena real que se muestra aquí.
Esta no es una tarea difícil. Ese problema también ocurre en mi sitio, debe cambiar los archivos js ordenados. Porque en el lugar donde está utilizando JSON Parsing, esta vez no se cargan sus archivos JS. EJEMPLO #
<script type="text/javaScript">
...........SOME CODE.............
</script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
cambiar a
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script type="text/javaScript">
...........SOME CODE.............
</script>
Experimenté este error cuando ejecuté una condición de búsqueda en un JSONArray dentro de un bucle for. El problema que enfrenté fue el resultado de uno de los valores en el bucle for que devuelve nulo. Por lo tanto, cuando intenté acceder a una propiedad en la que falló.
Entonces, si está haciendo algo dentro de JSONArrays donde no está seguro de la fuente de datos y su integridad, creo que es un buen hábito tratar con excepciones nulas e indefinidas en este caso.
Lo arreglé buscando nulo en el valor devuelto de find en el JSONArray y manejando las excepciones de manera apropiada.
Pensé que esto podría ayudar.
Recibí este mensaje durante la validación (en el proyecto MVC). Para mí, agregar el elemento ValidationMessageFor solucionó el problema.
Para ser precisos, la línea número 43 en jquery.validate.unobtrusive.js causó el problema:
replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;
Recibía este error, cuando estaba usando la misma variable para la cadena json y analicé json:
var json = ''{"1":{"url":"somesite1","poster":"1.png","title":"site title"},"2":{"url":"somesite2","poster":"2.jpg","title":"site 2 title"}}''
function usingjson(){
var json = JSON.parse(json);
}
Cambié la función a:
function usingjson(){
var j = JSON.parse(json);
}
Ahora este error se fue.