この方法で Javascript クラスを宣言しました。
function MyClass(params){
this.setValues=function(params){
this.myAttr1=params.attr1;
this.myAttr2=params.attr2;
}
this.setValues(params);
}
その結果、私はMyClass
public attributesmyAttr1
とmyAttr2
public 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()
。
もっと良い解決策があると思います。クラスの宣言に関するベスト プラクティスに従っていない可能性があります。