多维数组 JQUERY 和 JSON

发布于 2024-11-01 22:51:52 字数 434 浏览 1 评论 0原文

好的..所以我有一个 json 字符串(myJson),如下所示:

{"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的长度仍然。有人可以解释一下为什么会发生这种情况吗?

Ok..so i have a json string (myJson) that looks like this:

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

and in my jquery function, I want to put these id and file values of my json string to an item in an array.

so, i have

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

but even after the execution of these codes, the length of the array myArray remains zero. Could somebody explain me why this is happening?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冷弦 2024-11-08 22:51:52

也许您将 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);

Perhaps you're confusing PHP associative arrays with JavaScript arrays. In JavaScript, you have objects instead of associative arrays and they behave differently. You can try one of the following approaches depending on your needs:

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

Or this:

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);
违心° 2024-11-08 22:51:52

您可以像这样简单地重写代码。

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

该代码将产生示例结果。

您得到“myArray”的长度 = 0,因为在本例中,“item1”是对象 myArray 的属性。它不是 myArray 的元素。

请阅读本文以获取有关“对象作为关联数组”的更多信息
http://www.quirksmode.org/js/associative.html

You code can be rewritten simply like this

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

This code will produce the sample result.

You got the length of "myArray" = 0 because in this case, "item1" is a property of object myArray. It is not an element of myArray.

Please read this for more information about "Objects as associative arrays"
http://www.quirksmode.org/js/associative.html

土豪 2024-11-08 22:51:52

尝试

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

DEMO

try

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

DEMO

莫多说 2024-11-08 22:51:52

这工作完美:

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;

this works perfectly:

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

but it breaks down when i send a multidimensional array created in php, the code i´m using is written below:

(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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文