さて,世間ではAjaxらしい。
ただ,どうも,XMLってのは好きになれない。
ってことで,タブ区切りのプレーンテキストにする。
これくらいなら,JavaScriptでもsplit("\n")&split("\t")で簡単に変換できる。
ってことでデータはそんな感じで定義してやった。動作もうまくいく。しかし,文字化けする。
HTTPは,XMLHTTPでとってきて,responseTextするとなんか文字化け。
XMLなら文字コードをちゃんと変換してくれて問題ないんだろうけど,textだとダメらしい。ベースとなるHTMLもShift_JISなんで,そのtextもそうだと思って変換してくれればいいんだけど。
次に,responseBodyをいじってやろうかと思ったけど,こいつもVARIANT配列か何かで,JavaScriptだとうまくアクセスできない。ということで,VBScriptを介す必要がある。JavaScriptからでも,VBScriptで書いた関数が呼べるんで,そうしておく。
VBScriptはあまり好きじゃないんで,組み込み関数がよくわからん……ChrやらChrBとかあるけどイマイチ区別が……
#長さ変換を間違えたり
で,色々間違えながら,下記のコードでShift_JIS→UNICODE(?)に変換関数を実装した。
#半角カナは抜けるけど,とりあえず使うなってことで……
Function fromSJIS(s)
Dim i, r, c
For i=1 To LenB(s)
c = AscB(MidB(s,i,1))
if c<128 Then
r = r & Chr(c)
Else
r = r & Chr(256*c+AscB(MidB(s,i+1,1)))
i = i+1
End if
Next
fromSJIS = r
End Function
で,メインのJavaScriptからは,↓な風に読んでやる。
responseText = fromSJIS(http.responseBody);
読み込み変換はとりあえず成功。
でも,これだとIE以外だと全く動かないよね……
いっそのこと,XMLにして,<r><![CDATA[…]]></r>にしてしまうか。