0

この方法で Javascript クラスを宣言しました。

function MyClass(params){

    this.setValues=function(params){
        this.myAttr1=params.attr1;
        this.myAttr2=params.attr2;
    }
    this.setValues(params);
}

その結果、私はMyClasspublic attributesmyAttr1myAttr2public functionを持っていますsetValues

私がする時

var myObj=new MyClass({attr1:"hi",attr2:"ho"});

オブジェクトは正しく作成されています。問題は、このオブジェクトを jquery ajax 呼び出しのパラメーターとして送信するときに発生します。

 $.ajax({
            type: "POST",
            url: "insert.php",
            dataType: 'json',
            data: {id: "1", obj:myObj});

setValuesのparamsが定義されていないため、この時点でエラーが発生します。したがって、この ajax 呼び出しは実行しようとしています(理由はわかりません)。setValues()

内部の属性のみを返す関数を作成するソリューションを見つけましたmyClass

this.getValues=function(){
    return {myAttr1:this.myAttr1,myAttr2:this.myAttr2};
}

その後

$.ajax({
            type: "POST",
            url: "insert.php",
            dataType: 'json',
            data: {id: "1", obj:myObj.getValues()});

しかし、属性を追加するときはいつでも、 で返すことを覚えておく必要がありますgetValues()
もっと良い解決策があると思います。クラスの宣言に関するベスト プラクティスに従っていない可能性があります。

4

1 に答える 1

0

代わりに、クラスのJSONへのシリアル化を処理する関数を.getValues実装する必要があります。.toJSONオブジェクトが文字列化されると(JSON.stringifyの基になる呼び出しによって)、自動的に。が呼び出されます.toJSON

于 2013-01-09T16:47:29.460 に答える