2011-01-04 11 views
1

経験豊富な.net開発者ですが、jqueryの新機能です。 jqueryのjquery noob:jsonを解析できません

を経由して選択ドロップダウンを埋めようと

イムそれはそう「jsResは」何とか配列に変換する必要があり、私の知る限り読んで基本的な

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('select[name*="edtPersonID"]').change(function() { 
      fillAddresses('[{"Foo": "Bar"}]'); 
     }); 
    }); 
    function fillAddresses(jsRes) { 
     alert(jsRes[0].Foo); 
    } 
</script> 

最初に何かをしようとイム作業aintの私はJSRをチェックすると、jsResは[0]配列

が、どのような警告が実際にもたらすで最初のオブジェクトを返すようにすることは

ちょうど「未定義」でありますes [0]これは "["とは、配列ではない文字列であることを意味します。

どのように修正できますか?

終了コードは、おそらく値のためのWebサービスにアクセスするためにgetJsonを使用し、その後、IDが選択

のオプションに追加し、いくつかのループを使用して、あなたの時間と忍耐

+0

ちょうど注 - 関数の引数として実際にJSONを入力していません。最初の要素としてオブジェクトリテラルを持つ配列リテラルを入力することを意味します。それは違いです - JSONは文字列、配列はネイティブのJavaScript値です。 – JAL

答えて

3
をするために多くのVEY感謝

'[{"Foo": "Bar"}]'は文字列を定義します。配列を定義するには、引用符を削除してください:[{"Foo": "Bar"}]。ちょうどC#のように。

evalを使用して、文字列内のjsコードを実行することもできます(特に、json文字列をjsオブジェクトに変換することもできます)。 eval('([1, 2])')は配列[1, 2]を返します。
Webサービスからこの文字列を取得する予定があるので、役に立つかもしれません。

fillAddresses([{"Foo": "Bar"}]); 

About eval

+0

eval()は有効なJSONのものだけでなく、文字列に含まれる* anything *を実行することに注意してください。文字列に関数呼び出しが含まれている場合、関数は実行されます。そのため、特定のJSONパーサーが存在します。 –

+0

あなたと他のすべてのポスターをありがとう!本当にここで私を助けてくれました。違いがちょうどいくつかのピクセルを作ることができます! :-) –

2
fillAddresses('[{"Foo": "Bar"}]'); 

基本的にあなたがconfにある単一引用符:)

乾杯

G.

2

をドロップJSONでJavaScriptリテラルオブジェクトを使用する

var president = { 
    name: "John", 
    age: 33 
}; 

をとかをエンコードするためにはJavaScript構文のサブセットを使用してJSONと呼ばれるデータ交換フォーマットがあります:JavaScriptでは、あなたは、例えば、{}記法でオブジェクトを定義することができます

{"name":"John","age":33} 

var json = '{"name":"John","age":33}'; 

...他の文字列と変わらない:JSON文字列をJavaScriptのプログラムに到達すると、それは単なる文字列です

JavaScript文字列処理関数を使用すると、この文字列を分析し、文字列にエンコードされた元の値を通常のJavaScript変数に抽出できます。jQueryは、AJAX関数を使用してJSON文字列をロードすると、自動的にそれを行います。

ただし、コードスニペットはJSONを使用してプログラムやコンピュータ間でデータを交換していません。したがって、実際にはJSONは必要ありません。整数を渡すのと同じ方法で直接値を渡すことができます。

関連する問題