JSONオブジェクトフォームMongoDBをejsテンプレートエンジンでページに送信しようとしています。私のDB(JSONオブジェクト)からの応答は次のとおりです。
"suppliers": [
{
"lastname": "lastname1",
"firstname": "firstname1",
"middlename": "middlename1",
"mobtel": "mobtel1",
"worktel": "worktel1",
"email": "email1"
},
{
"lastname": "lastname2",
"firstname": "firstname2",
"middlename": "middlename2",
"mobtel": "mobtel2",
"worktel": "worktel2",
"email": "email2"
}
]
DB から i をオブジェクトとして取得したら、それを str に文字列化して、EJS テンプレート エンジンの var として送信する必要があります。
var myJSONText = JSON.stringify(doc.suppliers);
profile["suppliers"] =myJSONText;
...
res.render('profile.ejs',{profile:profile});
フロントエンドでは、json-data を含むプレーンな文字列を取得します。jQuery を介してオブジェクトに解析します。
var jsonObject = jQuery.parseJSON('<%= profile.suppliers %>');
for (var i=0; i<jsonObject.length; i++){
//trying to show field 'name' for every supplier
alert(jsonObject[i]['lastname']);
}
...機能しませんが、2回警告する必要があります。フロントエンドに来て、プレーンテキストのJSON文字列を検査しようとしましたが、そのようなシンボルを見つけました:
[{"lastname": " ...
そのようjQuery.parseJSON
な文字列から有効なオブジェクトを作成できないようです。私が間違っていることは何ですか?ありがとう!
更新:まあ、私は自分のコードを次のように変えました:
NodeJS コード:
profile["suppliers"] =doc.suppliers;
res.render('profile.ejs', { profile:profile });
jQuery コード:
for (var i=0; i<'<%= profile.suppliers %>'.length; i++){
//trying to show field 'name' for every supplier
alert('<%= profile.suppliers %>'[i]['lastname']);
}
そして、未定義のアラートの終わりのないループが発生します。
更新 2: ソース コードを更新したので、次のようにします。
ノードJS:
var myJSONText = JSON.stringify(doc.suppliers);
profile["suppliers"] =myJSONText;
res.render('profile.ejs',{profile:profile});
クライアント:
var jsonObject = <%- profile.suppliers %>;
$.each(jsonObject, function(item) {
alert(item.lastname);
});
生成されたソース コード:
var jsonObject = [{"lastname":"lastname1","firstname":"firstname1","middlename":"middlename1","mobtel":"mobtel1","worktel":"worktel1","email":"email1"},{"lastname":"lastname2","firstname":"firstname2","middlename":"middlename2","mobtel":"mobtel2","worktel":"worktel2","email":"email2"}];
問題ないようですが、まだ未定義のアラートが表示されます。ただし、アラートは 2 回しか発生しません。つまり、JSON を正しく解析し、lastname プロパティにアクセスできないということですか?