4

mongodbからクライアントにオブジェクトの配列を渡したい...

これがオブジェクトです

var objeto_img=
                            {
                                name:'name of the file',
                                image:'image.jpg url',
                                title:'title of the image',
                                caption:'descripcion of the image',
                                link:"#",
                            };

一部のプロファイルでは、多くの画像があるため、このようなオブジェクトの配列です

[var objeto_img=
                            {
                                name:'name of the file',
                                image:'image.jpg url',
                                title:'title of the image',
                                caption:'descripcion of the image',
                                link:"#",
                            },var objeto_img=
                            {
                                name:'name of the file',
                                image:'image.jpg url',
                                title:'title of the image',
                                caption:'descripcion of the image',
                                link:"#",
                            },var objeto_img=
                            {
                                name:'name of the file',
                                image:'image.jpg url',
                                title:'title of the image',
                                caption:'descripcion of the image',
                                link:"#",
                            };]

これはサーバーコードです

res.render('index/perfil_publicacion_contenido',
    {
        datos:datosRecibidos
    })

datosRecibidosは、mongodbのオブジェクトの配列です。

と私は翡翠の中に変数を入れようとしています

input(type='hidden',id='imagenes',value=datos.img)

しかし、私がオブジェクトを取得しようとすると

var fotos=$('#imagenes1').val();
            for(foto in fotos)
            {
                console.log(fotos[foto].image)
                console.log(fotos[foto].name)
                console.log(fotos[foto].caption)
                console.log(fotos[foto].title)
            }

コンソールログの印刷は未定義です

何故ですか???クライアントでdbから情報を正しく取得するにはどうすればよいですか?tnxすべて

4

1 に答える 1

9

私の理解が正しければ、オブジェクトの配列をvalue入力の にシリアル化する必要があります。これを試して:

- var jsonString = JSON.stringify(datos)
input(type='hidden',id='imagenes',value=jsonString)

最初の行は、オブジェクトの配列を文字列に変換し、それを入力の値に配置できるようにする必要があります。

次に、値を読み取るときに、JSON を解析する必要があります。

var fotos = $.parseJSON($('#imagenes1').val());

$の使用は、jQuery を使用していることを意味すると想定しています。

更新: 説明

サーバーのメモリ内にあるオブジェクトを、ブラウザで実行されている Javascript で使用できるようにする場合は、そのオブジェクトをページに「書き込む」必要があります。そのプロセスは正式にはシリアル化と呼ばれ、Javascript でそれを行う方法はJSON.stringify. 入力のページに入るvalueと、それは単なる文字列です。ページ上の Javascript は、その文字列をオブジェクト (またはこの場合はオブジェクトの配列) に変換する必要があります。ここで JSON.parse の出番です。古いブラウザーには JSON.parse がないため、jQuery.parseJSON のようなポリフィルを使用して、古いブラウザーでも文字列を Javascript オブジェクトに変換できるようにする必要があります。

ところで、特に のデータは必要ないが、hidden inputそれが最善の方法だと思われる場合は、別の方法を提案させてください。var fotosサーバーからの値を含めることが目標の場合は、ページのタグでdatos直接行うことができます。<script>ジェイドでそれを行う方法は次のとおりです。

script
  var fotos = #{JSON.stringify(datos)};

オブジェクトをページに渡すことに関するこの質問を確認してください。

于 2012-10-18T21:02:42.910 に答える