jQuery.ajax() がデータ オブジェクト関数を呼び出しているという問題があります。たとえば、次のようなオブジェクト構造があります。
var TestFactory = (function () {
var _id;
var _attributes;
return {
createObject: function (objectId) {
var value = null;
_id = objectId;
_attributes = {};
function _showErrorStatus() {
$('label')
.css('background-color', 'red')
.css('color', 'black')
.text('jQuery called me...');
}
function _attr(key, value) {
if (value == null) {
return _attributes[key];
}
_attributes[key] = value;
return this;
}
return {
id: _id,
attributes: _attributes,
showErrorStatus: _showErrorStatus,
attr: _attr,
}
}
}
})();
次のように、このオブジェクトを jQuery.ajax() 呼び出しのデータ値として使用したいと思います。
var myObject = TestFactory.createObject(12345);
myObject.attr('name', 'Fred Flinstone');
$.ajax({
url: '/echo/json/',
type: 'GET',
data: myObject,
dataType: 'json',
});
私が直面している問題は、ファクトリによって返されたオブジェクトから jQuery.ajax() が showErrorStatus() 関数を呼び出していることです。コードのどこにもこの関数を呼び出していません。
私はこのオブジェクトを使用することで得られる OOP の品質が気に入っています。大幅に書き直さずにこのケースを処理する方法はありますか (たとえば、「クラス」からすべての機能を削除するなど)。
注:この問題を説明するのは難しいので、ここに jsfiddle での完全な実行例を示します。