0

私が現在開発しているコードのアイデアは、(サーバーから取得した) JSON ファイルからデータを抽出し、美しく素敵なグラフィックを使用して結果を表示することです。問題は、JSON の結果を Jquery コードに保存するオブジェクトを取得できないため、それらをグラフィックにロードできることです。簡単にするために、私のコードは次のようになります (Javascript 部分)

var obj; //I initialize it here in order to make it global though it doesn't work

function handle_json() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
      var json_data = http_request.responseText; 
      obj = eval("(" + json_data + ")");
      //at this point I have the information I want in "obj"
} else {
  alert("A problem ocurred.");
}
http_request = null;

} }

しかし、情報にアクセスして表示できるように、「obj」を jQuery コードに送信したいと考えています。しかし、これを試してみると(jQuery部分)

$(function () {
 alert(obj.results.bindings[0].a.value); //<-- this doesn't work, obj isn't initialized
var fert = [];
fert = [[1990, 1.28], [1995, 1.25], [2000, 1], [2005, 1.3], [2010, 1.83]];

var plot = $.plot($("#placeholder"),
       [ { data: fert, label: "Fertility"} ], {
           series: {
               lines: { show: true },
               points: { show: true }
           },
           grid: { hoverable: true, clickable: true },
           yaxis: { min: 0, max: 2}
         });

問題が何であるかがわかります。非同期の Ajax 呼び出しを行ったので、json 情報 ( obj = eval("(" + json_data + ")") ) を評価した直後に jQuery を実行する必要がありますが、そうではありませんノーハウ!それが役立つ場合は、「flot」というライブラリを使用してグラフィックを作成しました。どうもありがとう!どんな助けでも感謝します:)

4

2 に答える 2

1

現在、jQuery コードはドキュメント対応ハンドラーにあるため、(明らかに) ドキュメントの準備が整うとすぐに実行されます。このタイミングは、Ajax 呼び出しとはまったく関係ありません。代わりに、jQuery コードを独自の関数に配置し、設定した直後から呼び出しますobj。または、設定した関数に jQuery コードを直接移動するだけですobj

  var json_data = http_request.responseText; 
  obj = eval("(" + json_data + ")");
  //at this point I have the information I want in "obj"
  // either process obj directly here, or call a function to do it...
  processData(obj);

  ...

  function processData(obj) {
     // your jQuery code here, using obj
  }

ただし、とにかく jQuery を使用しているため、jQuery の Ajax 関数の 1 つを使用して Ajax を実行することをお勧めします。私はお勧めし$.getJSON()ます。

$.getJSON("yourURLhere", function(obj) {
    // your jQuery code using obj here
});
于 2012-05-21T22:07:23.757 に答える
0

jQuery の AJAX 呼び出しを使用すると、データの受信後に実行する関数を提供できます。次のように、JSON を自動的に解析するバリアントもあります。

$.getJSON(url, options, function(response) {
    ... do something with the data ...
});
于 2012-05-21T22:08:43.460 に答える