人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

prototype.jsのAjax.Requestについて教えて下さい。
<div id=id1></div><a href=javascript:ajax1("id1");>ajaxtest1</a>
<div id=id2></div><a href=javascript:ajax1("id2");>ajaxtest1</a>
という風にajax1というメソッドに要素名を渡しして、AJAX.requestを実行する処理を作りたいと考えています。

そのため、AJAXが成功した場合に、onCompleteで成功後に実行する関数を指定できると思いますが、そいつにも要素名を渡したいです。(ajax1(要素名)⇒Seiko(要素名)の引継ぎ。)

つまり、onComplete:Seiko(要素名,req)という風に2つ引数を渡したいのですが、どうもうまく行きません。

onCompleteで指定する関数に2つ(デェフォルトはrequest結果が渡る)引数を渡すことはできるのでしょうか?無理だった場合にはどういった方法が考えられますでしょうか?

●質問者: dosukoi1988
●カテゴリ:インターネット ウェブ制作
✍キーワード:Ajax prototype.js SEIKO そいつ メソッド
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● susie-t
●60ポイント

prototype.jsのAjax.RequestのonCompleteに指定できる関数の引数は固定(第一引数がXMLHttpRequestオブジェクト、第二引数がX-JSONヘッダのeval結果)です。

なので、ある関数を指定の引数で実行させたい場合は、その関数を呼び出す関数を作成、それを登録します。

具体的には、以下のようにします。

<html>
<head>
<title></title>
<script language="javascript" src="prototype.js" charset="utf-8"></script>
<script language="javascript">
<!--
function ajax1(id){
 new Ajax.Request(
 'test.txt', 
 { onComplete : function(req){
 Seiko(id, req);
 }
 });
}
function Seiko(id, req){
 $(id).innerHTML = req.responseText;
}
//-->
</script>
</head>
<body>
<div id="test"></div>
<button onclick="ajax1('test');">TEST</button>
</body>
</html>

関数ajax1の変数、引数はonComplete関数内部からも参照可能です。(このスコープ特性をレキシカルスコープと呼ぶそうです。)

参考になれば幸いです。

参考:http://d.hatena.ne.jp/susie-t/20060822/1156212923

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ