雑記 2012/02/13/月曜
Ajax問い合わせ結果をdiv idのところへ放り込むぞ、
と思いつつ、やったのはAjax通信部分のコードの短縮化でしたw
前々からAjaxが必要な所でそれぞれ別個に、
ほぼ同じ内容のAjaxのコードを複数個用意してたのですが、
いくらワシがヘボいとはいえ無駄過ぎるコードはマズいと思っていたのです。
昔のソース引っ張り出して無駄な修正が必要だったりして手付かずのままでした。
とりあえず、Ajax部分で重複しまくってた50行を削減し、全体で192行から140行まで減らせた。
urlと書き換え指定のdiv id部分や各メッセージを配列で摺り合わせてもうちょい削りたいけど、
url判定に正規表現を利用したのでurl用の配列も作らないといけなくなったかも?
ただ、エラー表示を全てalertに置き換えたンで、
全て配列摺り合わせにするとまたコードが増えそうな予感。
正規表現は今のところ二箇所しか利用しないので条件構文に直接記述で済むしなぁ。
そしてIEだけで出るJavaScriptのエラーが一つ出た。
htmlの内容の読み込みと、外部jsファイルの読み込みのタイミングの問題みたい。
(jQuery等でも似たようなエラーがあるらしく、JavaScriptの宣言なんかのタイミングも、
HTMLの読み込みや記述箇所を見極めてちゃんと考える事が大切らしい。
)
だがしかし、エラー吐いてンのに結局読み込んでるIEだけのためにいちいちやるのもなぁ。
などと思いつつ、Ajaxのタイムアウト処理を入れて試しにコードを走らせている内に消えたw
やはり外部jsファイルの処理がhtmlの読み込みより早く終わるのと、
読み込みのタイミング問題でこのエラーを出しやすいgetElementByIdを、
コード削減と併せてほとんどalertに置き換えたからなんだろうなー。
やり方がマズいとエラーが出やすいものをエラー処理メッセージのために使ってたわけか・・・orz
変数の宣言位置とスコープにも違いがあるし、なかなかに曲者。
そして全く関係ないけどプロパイダの関係でポート開放も出来ないようだ。
仮想環境でもいいっちゃいいけども、どこか借りて実際にやってみたいなー。