はじめに 今更ですが最近ajaxを少し触るようになりました。 jQueryを使えば簡単にajax通信ができるため、単純なものであればそれほど実装は難しくないかと思います。 ですが少し複雑なことをやろうとしてみると、急にハードルが上がる気がします。 そこで自戒を込めて、ajax初心者の方に対してはじめにこれを知りたかったと思えるんじゃないかというものをまとめてみたいと思います。 ※jQueryを利用したajax通信を想定しています 目次 処理の順番を意識する $.ajax()の省略メソッドを知る イベントを知る デバッグ方法を知る 通信状況を想定する(タイムアウトを設定する) 連続クリックを防止する ← [New!] 連続通信を防止する ← [New!] 処理の順番を意識する ajaxを使用する場合は、非同期通信で処理したいケースがほとんどかと思います しかし単純にそのまま書いただけでは処理
彼女とMacBookを並べてコーディング。 ようやくRailsの開発を一人で出来るようになった彼女が、俺に突然質問を投げかけた。 「ねぇ、WebサービスのPushってどうやって実装するの?」 「一般的には3つの方法がある。」と俺は答えた。 「クールな順にWebSocket、次にコメット、最後にポーリングだよ」 彼女は目を輝かせながら「それでそれで?!」と説明を求めてくる。 「ポーリングは、一定の時間ごと、たとえば3秒ごとにAjaxでサーバにリクエストを送って新着の情報が無いか問い合わせて、もし新着があれば処理を、なければスルーして次の問い合わせに備えるPush通知の実装だ。手軽に実装できる反面、新着がない多くの時間常にリクエストを送り続けることになるので無駄が多い。大規模なサービスで実装すれば、それだけでDDoSっぽくなっちゃう。また、リアルタイムも厳密には実現できなくて、MAXでポーリン
link_to_remote を利用したAjaxな実装メモ。 トリガー作成 標準で付属しているprototype.jsなどをjavascript_include_tagでロードし、link_to_remoteで非同期通信のトリガーとなるリンクを作成。before/success/failure辺りはなくても動作する。 <%= javascript_include_tag :defaults %> <%= link_to_remote "ここをクリック", :url => {:action=>'testJson'}, :before => "$('indicator').show()", :success => "showList(request)", :failure => "alert('failure')", :complete => "$('indicator').hide()" %
jQuery Autocomplete Mod はjQueryベースのプラグインで、テキストボックスに入力した情報を元に、Googleサジェストのような機能を簡単に実現することができます。 Ajaxを使って外部プログラムと通信しながら情報を取得し、候補をユーザーに表示することができるほか、予めJavaScript内に定義していた情報から入力された情報を補完するというような使い方もできます。 設置方法は、jQuery Autocomplete Mod のサイトから、下記3つのファイルをダウンロードします。 ・ jquery.autocomplete.js 本体となるJavaScript ・ jquery.autocomplete.css 検索結果のフォームを表示するためのCSS ・ indicator.gif サイト上ではリンクが掲載されていないのですが、検索候補のローディング時に表示する画
JavaScript から Flash を操作できるツール、Flex-Ajax Bridge (FABridge) を試してみました。 名前に Flex や Ajax とついていますが、Flex や Ajax にしばったライブラリではなく、JavaScript から SWF を操作できる、と考えたほうがよい感じです。 必要なファイルは SWF に組み込む FABridge.as と HTML でインクルードする FABridge.js の2つです。ダウンロード方法はちょっとややこしいので最後で説明します。 SWFの準備 まずは、SWF 側の実装。bridge フォルダに FABridge.as を置きます。AS3.0 です。 // Test.as package { import flash.display.Sprite; import bridge.FABridge; public cl
Web APIが公開されてなくても、動的にマッシュアップすることが可能だ。便利に使える“まとめサイト”を、各種ツールで動的に構築しよう。 すべて表示 新着記事 関連記事 まとめサイト2.0: 2008年、Webは文字列解析で変わっていく オルタナティブ・ブログを例に挙げて“まとめサイト”を作るための手法を紹介してきたこの連載。最終回は、文字列解析の自動化からキーワードを抽出するための方法を紹介しよう。 (2007/12/28) まとめサイト2.0: 付加価値コンテンツとは――スクレイピングからグラフ化まで HTMLを解析し、スクレイピングしたデータを基にグラフ化を行う。遷移を把握するために有効なものとして、さまざまな応用が考えられるだろう。 (2007/12/21) まとめサイト2.0: スクレイピングで記事ランキングのグラフ化 「オルタナティブ・ブログ」で公開されている週間アクセスランキ
WebSocket が、12月12日についにRFCになりました(RFC6455)。テキスト転送だけでなく、バイナリー転送もサポートされ、コネクションをキープするための ping/pongなどコントロールフレームも定義されました。rfcになる過程で様々なバージョンと、その実装系が出ていますので、そこのネゴシエーションの仕組みが入っていたり、以前は割と自由に使えそうだった subprotocolが、IANAにレジストレーションが必要になったりと、なかなかしっかりしたプロトコルに仕上がっている印象です。 さて、今年最後となる、今日のポストでは、このWebSocketにより、今後のWebはどうなっていくのかについて、僕が最近感じている妄想を書き連ねてみます。 WebSocketとは、いったい何なのか? さて、WebSocketとは、いったい何なのでしょうか?この問に対して、一般的には、 WebでP
Google AJAX Search APIは便利なんだけどAJAXじゃない方法で表示したい時用 手順は Googleから検索結果をjsonでGETする PHPで検索結果をデコードする あとは自由になにかする まず取得用URLは https://ajax.googleapis.com/ajax/services/search/web?v=1.0 次に主なパラメータ v=1.0 (バージョン) q=hoge (検索query、urlencodeされた文字) rsz=small (もしくは large 、省略した場合は small になる) hl=lang_ja (何語で検索するか日本語ならja、省略時は英語になる) start=8 (何件目から表示するか、1件目は0になる。省略時は0) ひとまずは以上で検索結果の取得は問題なく行えます。 あとはcURLなりfile_get_co
機械翻訳のWebサービスがないか探していたのですが、Google AJAX Language APIってのを見つけました。本来はJavascriptから使うみたいですが、Pythonからも使えたのでまとめときます。結果はJSONでかえってくるのでその解釈にsimplejsonというPythonライブラリが必要です。 #coding:utf-8 import urllib import simplejson def translate(query, frm="en", to="ja"): query = query.encode("utf-8") data = {"q":query, "v":"1.0", "hl":"ja", "langpair":"%s|%s" % (frm, to),} f = urllib.urlopen("http://ajax.googleapis.com/aja
function backgroundLoad ( ids ) { for ( var i=0; i < ids.length; i++ ) { var a = getArticleWithCache(ids[i]); backgroundLoad(a.children); } } このbackgroundLoadはIDの配列を引数に取り、その各IDに対して上で定義したgetArticleWithCacheを呼び出します。これでIDに対応する記事のデータがキャッシュされます。そして読み込んだ記事の子記事のIDに対してbackgroundLoadを再帰的に呼び出すことで、ツリー全体をキャッシュすることができます。 ここまですべてうまくいっているように見えます。しかし、一度でもAjax開発を経験したことのある方ならば、これではうまくいかないということはすでにおわかりだと思います。これまでの例で
Ajax開発支援ツールをまとめておきます。 | コーディング | ブラウザ | テスト | デザイン | JSツール | 画像 | リファレンス | | チートシート | JSお勉強 | リンク | 編集履歴 | ・コーディング支援ツール ↑TOP aptana eclipseのプラグインのJS,CSS,HTML,XML,PHP,AIR等のエディタ コード補完機能やJavaScriptのクラスの階層表示もサポート 解説記事1 ,解説記事2,正式版情報 JSEclipse Adobe提供のecliseプラグイン。こちらも参照 コード補完機能や、オープンソースライブラリもサポート Spket IDE eclipseプラグインのJavaScript,XMLエディタ XUL/XBL,SVG,Lzszlo,Yahoo! Widgetをサポート Googlipse Google Web Tookit用
最近、「これからのウェブ・アプリケーションはAjaxだ」という声を良く聞く。ソフトウェアを生業としているエンジニアとしては、この手の「流行もの(hype)」に触れた時には、表面的なものに踊らされずに、その本質を自分なりにしっかりと捕らえて消化・吸収して自分のものにしなければいけない。今までも、「オブジェクト指向」、「マルチ・ティアー・アーキテクチャー」、などの言葉が一人歩きするたびに、「これからは○○だ」とか「○○の時代は終わった」などと、過激なことを言って読者の目を引こうとだけするマスコミや企業のマーケティング戦略に数多くの人が踊らされてきた。 そんなノイズだらけのメッセージに混乱させられた結果、「Cではオブジェクト指向のプログラミングは出来ない」と信じているエンジニアがいまだに沢山いることは全く嘆かわしいことだ。「オブジェクト指向のプログラミング」は、設計姿勢・プログラミングスタイルに
jQuery.upload: A simple ajax file upload plugin ajaxで簡単ファイルアップロードが可能なjQueryプラグイン「jQuery.upload」 同じページ内に生成したiframeへデータをPOSTすることで、非同期にファイルをアップロードが可能にするものです。 ファイルを選択すると即時にアップロードが開始するのが特徴 アップロードを完了すると次のように、ファイル名・サイズといったファイル情報が表示されるデモが公開されています。 ファイルアップロードを頻繁に行うようなケースにおいて、便利に使えるインタフェースが組み込めそうですね。 関連エントリ ajaxファイルアップロードに使えるjQueryプラグインいろいろ PHPでファイルアップロードの処理を超簡単にするクラス例「EasyUp」 ファイルアップロードの際に便利なFlash/JavaScri
今日はIEのメモリリーク対策に注力した - SEの行き着くところ…の続き。ついについに解決した。解決の糸口(というか答え)はPrototype.jsにしっかりと書いてたやんか! // avoid memory leak in MSIE: clean up this.transport. onreadystatechange = Prototype.emptyFunction; どうやらDOMオブジェクトだけでなく、new ActiveXObject('Msxml2.XMLHTTP')もメモリリークする模様。(確かに考えてみりゃそっちの方がリークしそう・・) ここでポイントだったのはonreadystatechangeに「null」を入れても効果がなく、関数外で定義された(できればグローバルスコープの)空関数を定義する、というところやった。(上のコードでいうとPrototype.emptyF
IE でのメモリリーク ちょこちょこと紹介されているので知っている人も多いと思うが、IE には DOM ノードに絡んだメモリリークの問題がある。これに関しては Microsoft 自身の記事である「Understanding and Solving Internet Explorer Leak Patterns」に詳しいが、簡単にいえば DOM ノードオブジェクトに関する循環参照を作ると、IE を終了させるまでそのオブジェクトが解放されないというものだ。記事によればメモリリークには以下のようなパターンがあるという。 1. 単純な循環参照 ある DOM ノードオブジェクトのプロパティをたどっていくと自分自身に行き着く場合。以下のようなパターンが考えられる。 element.property == element element1.property1 == element2, element2
[ajax][javascript][はてブ] はてブの「ブックマークの確認」ページは、IEでメモリリークする! IE のメモリリーク調べる為の「Drip」ってツールが ここにあって、 このツールは単純にリークしそうなコードチェックしたり、 オートリロードして、外部から参照したメモリ使用量を記録してくれるだけなんだが はてブの追加ページで確認するとこんな感じになる。 (オートリロードなんで負荷高くなるから、悪用したり、やりすぎたりしないようにw) タスクマネージャー等の、外部から参照したメモリが増えているからといっても OSがアプリケーション用にキャッシュしているメモリが増加しているだけの 可能性があるから、一概に鵜呑みはできないんだが 平均して1回のリロードに 1M 近く増えていくとかおかしい。 (MicroSoft もタスクマネージャーで確認しろっつってるし) IE単独だと、閉じた時点
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く