2010年3月24日水曜日

ページを移動せずTwitterにPOSTさせる方法

タイトルそのまんま、Javascriptをちょこっとだけ使ってページを移動させずTwitterにPOSTするというサンプルです。

俺的にはシンプルですごくいい案だと思うんだけど、みんなやらないとこを見ると何かとんでもない穴があるんだろうか・・・未熟ゆえにわからないので、そういうのも教えてほしいので記事にすることにします。


とりあえず今思い当たるデメリットとしては

  • レスポンスを無視するので送信失敗が判別できない。

  • 通信状況によっては送信しきれないことも。

  • あくまでTwitterを信じているという前提(笑)



認証はAPI叩いてBASIC認証しているんで特に問題ないと思うし・・・これでいいんじゃないかなぁ。使ってみたい人いたら是非使ってください。設置も超簡単です。

Sample

<HTML> <HEAD> <TITLE>Twitter投稿</TITLE> <script type="text/javascript"> //<!-- function send(){ setTimeout("ato()", 3000); } function ato(){ twAreaHTML = "POST完了しました。"; if(document.all){ document.all("tw") = twAreaHTML }else{ document.getElementById("tw").innerHTML = twAreaHTML } } //--> </script> </HEAD> <BODY> <DIV id="tw"> <FORM action="http://twitter.com/statuses/update.xml" target="twFrame" method="post" enctype="application/x-www-form-urlencoded"> <INPUT type="text" size="80" maxlength="140" name="status" value="投稿したいメッセージ"> <input type="submit" value="発言" onClick="send()" onmousedown="send()"> </FORM> </DIV> <IFRAME src="" name="twFrame" width="1" height="1"></iframe> </BODY> </HTML>


これを実行するとテキストボックスとボタンが出現、テキストボックスに文字をぶち込んでEnterを叩けばTwitterに投稿されて、3秒後にそのフォームが自動消滅します。iframeを使ってそこにAPIを呼び出してるわけです。

注意としては、文字コードをUTF-8にしないと日本語はPOSTできません。あとiframeが使えないブラウザではうまく機能しないと思います(当たり前)。

0 件のコメント: