• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【javascript文法】 prototype.js Ajax.Request onSuccess:に指定するfancitonの書き方)

【Javascript文法】prototype.js Ajax.Request onSuccess:に指定するfunctionの書き方

このQ&Aのポイント
  • 質問文章では、Ajax.RequestのonSuccess:に指定するfunctionをprototypeを使って宣言したいという課題があります。
  • 具体的には、Ajax.Requestが返してくる引数も使いたいため、this.processRequest(h,1)のように書きたいとのことです。
  • このような場合、どのように記述するのがベターなのか、アドバイスを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.2

bindでOKと言っておきながら動かなかったらあれなのでちょっと試してみました。 関数processRequestを変更しないのであれば、   onSuccess: this.processRequest.bindAsEventListener(this,1) で動くと思います。 関数processRequestの引数の順序を   http.prototype.processRequest = function(arg,h){ と変更すれば、   onSuccess: this.processRequest.bind(this,1) で動くと思います。 余談ですが、 > var url="/ruby/hello.cgi"; //実際に検証する為にはwebサーバにこのcgiを置く必要あり ちょこっと実験するだけならcgiスクリプト作らなくても HTMLファイルやTEXTファイルで動作確認できますよ。

kingfruits
質問者

お礼

ご回答ありがとうございます。 Wernerさん。 いつも本当にありがとうございます。 私もその後、いろいろ調べて、 self=this; を以下の前で定義して解決してる人がいました。 onSuccess: function(h){self.processRequest(h,1);} >HTMLファイルやTEXTファイルで動作確認できますよ。 そうですね!! 気が付きませんでした。

その他の回答 (1)

  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

ええと、こういう場合もあるからと言うことで 前の質問で参考URLを提示しておいたのですが見ましたか? prototype.jsを使ってるならbindを使うのが一番良いでしょうね。 というか使わないなんてもったいない。

kingfruits
質問者

お礼

すみません。。 一応読んだのですが。。 >prototype.jsを使ってるならbindを使うのが一番良いでしょうね。 >というか使わないなんてもったいない。 baindで気持ちよく書けました。 (ついでにprototype.jsぽく直しました) var http = Class.create(); http.prototype = { initialize: function(){  this.val=1;  this.url="/ruby/hello.cgi"; }, request: function(){   new Ajax.Request(this.url, {   method:"get",    onSuccess: this.processRequest.bind(this,1)   });  },  processRequest: function(arg,h){   alert(this.val+arg);   alert(h.responseText);  } }; var r = new http(); r.request(); どうも、お世話になりました。

関連するQ&A

専門家に質問してみよう