使用してみました。
jQuery.ajaxで同期通信する場合のメモです。
そもそも最初は非同期とか意識してなくて、以下のようにやろうとしてました。
var hoge = 0;
$.getJSON("json.js", {"pram1":"a","param2":"b"}, function(data,status){
hoge = data.key1;
});
hogeを外部で使用しようとしても値が入っていない。
変数スコープの問題もあるのですが、そもそも非同期通信なのでこういう書き方自体
まずいということが分わかりました。
なので、jQuery.ajaxを使用して同期通信に変更。
var retText = $.ajax({url: "json.js", data: {"param":"1", ,"param2":"b"}, async: false});
「async: false」で同期通信になります。
jQuery.ajaxはXMLHttpRequestを返します。
retText.responseTextにはjson形式のテキストが入っているのですがjsonと理解されずにそのまま
テキストなので、定義し直します。
eval("var retData=" + retText.responseText);
これでjsonとして認識されるので、retData.key1とかで使用できます。
0 件のコメント:
コメントを投稿