2011-04-19 98 views
4

Ok..so我有一個JSON字符串(myJson),看起來像這樣:多維數組jQuery和JSON

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

,並在我的jQuery的功能,我希望把我的JSON這些ID和文件值字符串到數組中的項目。

所以,我有

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

但即使是這些代碼的執行之後,陣列myArray的長度保持。有人可以解釋爲什麼會發生這種情況嗎?

+0

首先這不是多維array..this是基本的JSON字符串 – diEcho 2011-04-19 10:00:55

+0

是啊...不過我想提出從解析的JSON字符串值放入一個多維數組。 – Prashant 2011-04-19 10:06:01

回答

4

也許你讓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); 
+0

我會試一試。非常感謝您的回覆。我是非常新的JavaScript。:) – Prashant 2011-04-19 10:11:27

0

嘗試

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

DEMO

+0

是啊...那給了我1和test.jpg – Prashant 2011-04-19 10:08:46

+0

閱讀http://api.jquery.com/jQuery.makeArray/ – diEcho 2011-04-19 10:22:39

1

您的代碼可以改寫單純的喜歡這

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

此代碼將生成示例結果。

您得到了「myArray」= 0的長度,因爲在這種情況下,「item1」是對象myArray的屬性。它不是myArray的元素。

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

但是當我發送的PHP創建多維數組它分解,代碼:

請有關「對象作爲關聯數組」 http://www.quirksmode.org/js/associative.html

0

這個完美的作品更多的信息,請閱讀本i'm使用被寫入下面:

(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;