Многомерный массив JQUERY и JSON - PullRequest
4 голосов
/ 19 апреля 2011

Хорошо ... у меня есть строка json (myJson), которая выглядит следующим образом:

{"id": "1", "file": "test.jpg"} 

, и в моей функции jquery я хочу поместить эти значения id и файла моей строки json вэлемент в массиве.

Итак, у меня есть

var myArray = new Array();
var parsedJson = $.parseJSON(myJson);
myArray['item1']['id'] = parsedJson.id;
myArray['item1']['file'] = parsedJson.file;

, но даже после выполнения этих кодов длина массива myArray остается ноль .Может ли кто-нибудь объяснить мне, почему это происходит?

Ответы [ 4 ]

4 голосов
/ 19 апреля 2011

Возможно, вы путаете ассоциативные массивы PHP с массивами JavaScript. В JavaScript у вас есть объекты вместо ассоциативных массивов, и они ведут себя по-разному. Вы можете попробовать один из следующих подходов в зависимости от ваших потребностей:

var myArray = {};
var parsedJson = $.parseJSON('{"id": "1", "file": "test.jpg"}');
myArray['item1'] = {};
myArray['item1']['id'] = parsedJson.id;
myArray['item1']['file'] = parsedJson.file;
myArray['item2'] = {};
myArray['item2']['id'] = parsedJson.id + '_2';
myArray['item2']['file'] = parsedJson.file + '_2';
console.log(myArray);

Или это:

var myArray = [];
var parsedJson = $.parseJSON('{"id": "1", "file": "test.jpg"}');
myArray.push({
    id: parsedJson.id,
    file: parsedJson.file
});
myArray.push({
    id: parsedJson.id + '_2',
    file: parsedJson.file + '_2'
});
console.log(myArray);
1 голос
/ 19 апреля 2011

Ваш код может быть переписан просто так:

myArray['item1'] = {"id": "1", "file": "test.jpg"};

Этот код даст пример результата.

Вы получили длину "myArray" = 0, потому что в этом случае "item1 "является свойством объекта myArray.Это не элемент myArray.

Пожалуйста, прочтите это для получения дополнительной информации о "Объектах как ассоциативных массивах" http://www.quirksmode.org/js/associative.html

0 голосов
/ 15 апреля 2014

это прекрасно работает:

var obj = jQuery.parseJSON('{"id": "1", "file": "test.jpg"}');
alert( obj.id );
alert (obj.file);

, но оно ломается, когда я отправляю многомерный массив, созданный в php, код, который я использую, написан ниже:

(jquery)

function actualizarIndex(){ 
    /* RECOGEMOS LAS VARIABLES */
    $.post('php/consulta-actualizar-index.php', 
        { arriendoConsulta: 'arriendo'}
        ,
        function(data) {
            var parsedJson = $.parseJSON(data);
            alert(parsedJson);
            alert(parsedJson.tipoInmueble);

        }).error(
            function(){
        console.log('Error al ejecutar la petición');
        }
    );

}

(php)

$actArriendo = $_POST["arriendoConsulta"];

//insertamos el inmueble con todas las opciones recbidas
$sql = "SELECT * FROM `recomendados-integridad` WHERE `negocio`= '$actArriendo'";
$inmueble = mysql_query($sql, $conexion) or die(mysql_error());

$i = 0;

if ($row = mysql_fetch_array($inmueble)){ 

   do { 
        echo "<hr><br>conteo: " . $i ."<br>";
        ${'camposInmuebleInicio'.$i} = array(
            'tipoInmueble' => $row['tipoInmueble'],
            'negocio' => $row['negocio'],
            'alcobas' => $row['alcobas'],
            'banos' => $row['banos'],
        );

        ++ $i;
       } 
       while ($row = mysql_fetch_array($inmueble)); 


} else { 
echo "¡ No se ha encontrado ningún registro !"; 
}


$casasArriendoArray = array( $camposInmuebleInicio0 ,  $camposInmuebleInicio1 , $camposInmuebleInicio2);
$json = json_encode( $casasArriendoArray );
echo $json;
0 голосов
/ 19 апреля 2011

попробуй

var obj = jQuery.parseJSON('{"id": "1", "file": "test.jpg"}');
alert( obj.id );
alert (obj.file)

ДЕМО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...