2009-08-21 13 views
2

Jqueryの$ .get関数を使用して別のURLのJSONデータにアクセスできますが、コード内の他の場所でそのデータを(配列として)どのように使用できますか?ローカルの配列としてリモートJSONデータにアクセスする方法

は、次のコードを考えてみましょう:

<script type="text/javascript"> 
    $(function() {   

    $.get("/some/other/url/that/returns/json", function(data){ 
     var d = eval(data); 
    }); 

    alert(d); 
    </script> 

機能はありませんが、それは私が何をしたいものです示すこと。事前にあなたのヘルプ/ヒントをありがとう。

+2

FYIでは、あなたの呼び出しに 'type' argを追加してevalを避けることができます: '$ .get( 'url'、function(data){...}、 'json')' – seth

+0

jqueryは内部的に評価します..with json dataType set – redsquare

+0

JSONパーサーがないブラウザ(ie:IE) – voyager

答えて

0

makeグローバル変数。または、それを使用する必要があればそれを割り当てます。これを行う

3

<script type="text/javascript"> 
var d; 

$.get("/some/other/url/that/returns/json", function(json){ 
    d = json; 
}, "json"); 
</script> 

あなたはjsonレスポンスを得るでしょうし、そのすでにアレイの場合、あなたは文句を言わない何もする必要がします。また、eval()をできる限り少なく使用してください。ので、あなたのコードは、それに対処する必要があり、

応答があるまでdは文句を言わない任意の値を持っていることを気をつけてください(すべてではない素晴らしいです)。おそらく、$ .get( "..."、関数(json){}、 "json")内からdを使用する関数を呼び出します。もちろん

<script type="text/javascript"> 
var d; 

useArray = function(d){ 
    //Operations that involve the response 
} 

$.get("/some/other/url/that/returns/json", function(json){ 
    d = json; 
    // Operate over "d" once your server 
    useArray(d); 
}, "json"); 
</script> 

、あなたは今、別の関数にd上ですべての操作を持っているとして、あなたは単にあなたがdに再びアクセスもする必要がある場合は、あなたのコードをよう変更する必要があり、この

<script type="text/javascript"> 
useArray = function(d){ 
    //Operations that involve the response 
} 
$.get("/some/other/url/that/returns/json", function(json){ 
    useArray(json); 
}, "json"); 
</script> 

を行うことができます必要です。これは単なるガイドです。 FYI

+0

私をeval()、voyagerから遠ざけてくれてありがとう。私は "未定義"の問題を扱うことについての質問を持っています - あなたが助けることができるなら、プレプレースの答えとチャイムを見てください。再度ありがとう、JP。 – trisignia

0

、あなたのコールに 'タイプ' 引数を追加し、evalのを避けることができます。$に.get( 'URL'、機能(データ){...} 'JSON')

または、$ .getJSON( 'url'、function(data){...});を使用できます。

関連する問題