- 締切済み
無名関数内の変数のreturn
function get_record(id,step,exefunc) { httpObj = new XMLHttpRequest(); ...XMLHttpRequest非同期通信 httpObj.onreadystatechange = function() { if(httpObj.readyState == 4) && (httpObj,status == 200) { data = httpObj.responseText; exefunc(data); }}} 上記関数でデータを1件取得します。 質問は2つあって、今はhttpObj.responseTextをexefunc関数の引数として渡して、responseTextを処理しています。 httpObj.responseTextをexefunc関数で処理するのではなくて、returnしたいのですが、どうすればよいかわかりません。無名関数の中にあるので、dataをreturnしても、外からは参照できないのです。 もう一つの問題は、get_record関数を呼び出す関数は2つあって、その2つを同時にwindow.onloadで実行したいのです。 get_recordでデータを取得、そのデータを表示するための関数disp1,disp2(表示場所が違うため2つにわけています)をwindow.loadで実行したいのですが、後に記述されたほうしか実行されません。 どうすれば2つがwindow.onloadで実行できるでしょうか。 足りない情報等あれば教えてください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
自信無しですが、 同期型でsend すれば、イベント駆動を使わなくていいようになるんじゃないかな。 もう1つの問題も同じ。 http://jsgt.org/mt/archives/01/000409.html http://jsgt.org/ajax/ref/lib/ref.htm なんかのライブラリを使うと、 非同期でも上書しないようになっている とあるので、参考になるかも。
補足
確かに、同期にすれば問題は解決しました。 動作はちょっと遅くなりましたが・・・ ライブラリも後で参考にします。 ありがとうございます!