0

私は、コードをプロトタイプからJQueryに変換しようとしている初心者です。私は基本を理解していますが、以下のコードで立ち往生しています。jqueryエクステントを使用してみましたが、うまくいきません。ここにコードがあります、私は本当にいくつかの助けに感謝します。

var SaveForm = Class.create();
SaveForm.prototype = {
    formId: null,
    responseText: null,

    initialize: function(formId)
    {
            this.formId = formId;
    }, 
    sendRequest: function(idform)
    {
            var referenceThis = this;
            $(idform).request(
            {
                      onSuccess: function(transport)
                      {
                              referenceThis.responseText = transport.responseText;
                              referenceThis.onSuccess();
                      },
                      onFailure: function(transport)
                      {
                              referenceThis.responseText = transport.responseText;
                              referenceThis.onFailure();
                      }
            });
    },
    onSuccess: function()
    {
    },
    onFailure: function()
    {
    }
}
4

2 に答える 2

0

変換は次のようになります。-'Class.create()'を使用する必要はありません-新しいSaveFormインスタンスを作成するときに新しい'new'を使用する必要があります-'referenceThis'を_thisに変更します。

なぜformIdの2倍を渡すのですか?初期化で1回だけで十分です

var SaveForm = function(){
    this.formId;
    this.responseText;
};

SaveForm.prototype.initialize = function(formId){
    this.formId = formId;
}

SaveForm.prototype.sendRequest = function(idform){
    var _this = this;
    $(idform).request({
        onSuccess: function(transport){
            _this.responseText = transport.responseText;
            _this.onSuccess();
        },
        onFailure: function(transport){
            _this.responseText = transport.responseText;
            _this.onFailure();
        }
    });
};

SaveForm.prototype.onSuccess = function(){};
SaveForm.prototype.onFailure = function(){};


var form = new SaveForm(); // 'new' is very important!!
form.initialize('myId');
于 2012-12-11T01:15:12.660 に答える
0

jQueryは、DOM、イベント処理、Ajax、およびアニメーション用に作成されています。「クラス」の作成はその範囲内ではありません。

ただし、簡単に単純なJavaScriptコンストラクター関数とプロトタイプメソッドに変換できます。

function SaveForm(formId) {
    this.formId = formId;
    this.responseText = null;
}
SaveForm.prototype.sendRequest = function(idform){
    var _this = this;
    $(idform).request({
        onSuccess: function(transport){
            _this.responseText = transport.responseText;
            _this.onSuccess();
        },
        onFailure: function(transport){
            _this.responseText = transport.responseText;
            _this.onFailure();
        }
    });
};
SaveForm.prototype.onSuccess = function(){};
SaveForm.prototype.onFailure = function(){};

ただし、これらの方法のどれが実際に必要かはわかりません。jQueryにはrequestメソッドがなく、Ajaxリクエストを実行するには、強力な$.ajax関数とDefereds機能を使用するだけです。必要なのは

 function submitForm(id) {
     var $form = $('#'+id);
     return $.ajax({
         url: $form.attr("target"),
         method: $form.attr("method"),
         data: $form.serialize(),
         dataType: "html"
     });
 }
 // Usage:
 submitForm("myForm")
   .done(function onSuccess(responseText) {…})
   .fail(function onFailure(error) {…});
于 2012-12-11T01:25:41.090 に答える