2009-04-26 25 views
8

Ejecución que:faltante] después de lista de elementos JSON análisis sintáctico

$.post(
"/url/to/method", 
{ }, 
function(data){ 
    var obj2 = eval("("+$(data).children()+")"); 
    // OR var obj = $.evalJSON($($(data).children())); // Jquery-json 
    $body = $("#AAA"); 
    $body.html(obj.fied); 
}, 
"xml" 
); 

mientras que a su vez en una "falta] después de lista de elementos" (en la fila 5 o 6) error en firebug. La salida JSON del método ha sido validada con jsonlint.com/

Probablemente es obvio, pero por favor soy novato en AJAX/JSON. Gracias

+4

No utilice 'eval' para analizar los datos JSON. Use 'JSON.parse' en su lugar. – Gumbo

+1

@Gumbo, estuvo de acuerdo JSON.parse en http://www.json.org/js.html – bendewey

+0

Si publica el JSON, sería más fácil ayudarlo. –

Respuesta

5

Utilice el método JSON.parse, o asegúrese de incluir un espacio al lado de sus parens antes de pasarlo a eval ...

eval(" (" + data + ") "); 
+0

Usar eval con espacios sigue siendo un no ir (Mismo error). Usando JSON.parse, aparece un error extraño: text.replace no es una función, json2.js: 445 –

+0

. Publique el JSON. Si contiene información confidencial, vuelva a crear el error utilizando datos ficticios. Obviamente hay algo mal con eso. –

0

¿Estás escribiendo esto en el .NET 2.0? Si es así, intente construir sus datos en una cadena de consulta en lugar de pasar un objeto JSON.

Ejemplo: var1 = alma & var2 = user

Donde "var1" y "var2" son los nombres de los parámetros que su WebMethod espera. Pase esto usando la publicación .. Datos: {querystring} Me encontré con problemas al pasar JSON a webservice en 2.0.

buena suerte

14

Lo que está sucediendo es que, probablemente, su llamada $ .post devuelve un objeto JSON ya. jQuery intentará detectar JSON automáticamente y analizarlo por ti. Cuando llama a eval en un objeto JSON como este, ve este error. ¡Furtivo! Simplemente use el objeto de datos tal como está.

+0

Tuve este problema, ahora solo uso el objeto al que puedo acceder a los miembros de JSON. Gracias. – Felix

+0

También pude solucionar mi problema con esta respuesta. Gracias. – mVChr

0

Resulta que jQuery tratará de averiguar si el resultado es JSON y analizar de forma automática, pero en este caso los datos ya es un objeto de JavaScript y no una cadena JSON espera de ser analizada. Entonces puede usar este objeto tal como es en lugar de usar eval() y JSON.parse.

Cuestiones relacionadas