2011-10-05 18 views
36

mi secuencia de comandos está obteniendo una cierta matriz del script del lado del servidor php.foreach para matriz JSON, sintaxis

result = jQuery.parseJSON(result); 

ahora Quiero comprobar cada variable de la matriz.

if (result.a!='') { something.... } 
if (result.b!='') { something.... } 
.... 

¿Hay alguna forma mejor de hacerlo rápido como en php 'foreach' 'mientras que' o algo bajo?

ACTUALIZACIÓN

Este código (gracias a hvgotcodes) me da valores de las variables dentro de la matriz, pero ¿cómo puedo obtener los nombres de las variables también?

for(var k in result) { 
    alert(result[k]); 
} 

ACTUALIZACIÓN 2

Ésta es la forma en lado PHP funciona

$json = json_encode(array("a" => "test", "b" => "test", "c" => "test", "d" => "test")); 
+0

Si no me equivoco, puede acceder a los atributos de cada objeto JSON mediante el uso de su nombre, como si se tratara de una propiedad. p.ej. 'JSONObject.name' para obtener el atributo dentro de JSONObject que contiene' {'name': 'foo'} ' –

Respuesta

72

Usted puede hacer algo como

for(var k in result) { 
    console.log(k, result[k]); 
} 

el que los bucles sobre todas las claves en el JSON devuelto e imprime los valores. Sin embargo, si usted tiene una estructura anidada, tendrá que utilizar

typeof result[k] === "object" 

para determinar si tiene que bucle sobre los objetos anidados. La mayoría de las API que he usado, los desarrolladores conocen la estructura de lo que se devuelve, por lo que esto es innecesario. Sin embargo, supongo que es posible que esta expectativa no sea buena para todos los casos.

+0

va a querer ponerle el corchete cuadrado. Editar: lo arregló. –

+0

revise su código –

+0

Sí, en realidad me aseguré de probar en la consola. ;) – hvgotcodes

8

Seguro, puedes usar el foreach de JS.

for (var k in result) { 
    something(result[k]) 
} 
26

Prueba esto:

$.each(result,function(index, value){ 
    console.log('My array has at position ' + index + ', this value: ' + value); 
});