2017-02-07 6 views
0

これらの言語にはいくつかの基本がありませんので、簡単な質問かもしれません。ウェブ言語を使用して変数を他の言語の名前に連結する方法

私はajax呼び出しからjsonでエンコードされたオブジェクトの配列を受け取ります。

var qtt=msg[0].nbr; 
$foo='<table>'; 
for (var i = 1; i<qtt; i++) { 
    $foo=$foo+'<th>'+msg[i].Col+i+'</th>'; 
} 
$foo=$foo+'</table>; 

I:私は彼らに、テーブルのヘッダを作るために、これらの要素を反復処理したいアヤックスのsuccess:function(msg)

array_unshift($data, array('nbr' => 6,'Col1' => 'Company name', 
'Col2' => 'Email','Col3' => 'Adress','Col4' => 'City', 
'Col5' => 'Code','Col6' => 'Country)); 

:それの初めで、私は私が必要とするいくつかの要素を追加しますmsgのi番目の要素にアクセスしたいのですが、 'Col' + iという名前が付いています。私にとっては、それは同時に簡単で難しいように見えます。

私はちょうどこれを行う方法は分かりません。どんな助けも歓迎です。

編集: Firebugを使用して、私はajax呼び出しの回答を取得できました。それがここであなたを助けることができることがある場合は(要素をフランス語であるが、それは私が以前話していたまさにです):

[{"nbr":6,"Col1":"Nom soci\u00e9t\u00e9","Col2":"Email","Col3":"Adresse", 
"Col4":"Ville","Col5":"Code postal","Col6":"Pays"}, 
{"Soc_Nom":"foo1","Soc_Email":"bar1","Soc_Adresse":"foobar1", "Vil_Nom": 
"Foofoo1","Vil_Code_Postal":"1000","Pys_Nom":"Belgique"},{"Soc_Nom": 
"Foo2","Soc_Email":"Bar2","Soc_Adresse":"foobar2","Vil_Nom":"Foofoo2", 
"Vil_Code_Postal":"2000","Pys_Nom":"Belgique"}] 

Ansewer: すべての情報以来、MSG []を反復処理する必要はありません私はmsg [0]にアクセスしたかったのです。

msg [0] ['Col' + i]を使用すると完全に動作します。

答えて

1

あなたが動的にプロパティ名にアクセスしようとしている場合は、文字列としてプロパティ名とインデクサーを使用することができます。

$foo=$foo+'<th>'+msg[i].Col+i+'</th>'; 

$foo=$foo+'<th>'+msg[i]['Col' + i]+'</th>'; 

msg[i].Col + i

(オリジナルコード)となり Colという名前のプロパティを探していて、の値を iの値に追加しようとしています。

第2の例では、動的プロパティ名'Col' + iを作成し、角括弧を使用してmsg[i]オブジェクトのその名前のプロパティにアクセスしています。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

+0

私はすべてのエラーを得ることはありませんが、代わりに会社名、電子メールまたは何か他のことはUndifinedを返します。私はこれを修正しようとしていたので、私はこの問題の起源を見つけることができなかったので、答えに時間をかけました。何か案が ? –

+0

追加:msgに2つの$ .eachとalert()を持つ適切なデータが含まれていることを確認しました。その面で何も間違っていません。 –

+0

@AlexandreRivaraはループ中にオブジェクト構造を提供できますか?たとえば、ブレークポイントを設定し、コンソールウィンドウ(Chrome on WindowsではF12)を開き、 'msg [i]'とタイプします。それはあなたにオブジェクトの構造を表示し、プロパティを展開または折りたたむことができます。 – ps2goat

関連する問題