Мое название вопроса не может быть правильно сформулировано, извините.Как я могу отправить объект через Ajax из класса Javascript?
Я хочу создать класс Javascript для упрощения отправки информации на php-страницу.
Я использую метод, описанный в this answer создать свой класс
Это то, что я до сих пор:
var ParseObject = Class.extend({
init: function(classname, id){
// required properties
this.classname=classname;
this.objects=[];
this.fields=[];
// optional properties
if(id && id != '') this.id='';
//this.command = command;
//this.callback='';
//this.parent=[];
//this.children=[];
//this.relation='';
},
set: function(field, value) {
if(field == 'classname') this.classname=value;
else if(field == 'callback') this.callback=value;
else if(field == 'command') this.command=value;
else this.fields.push(field, value);
},
addChild: function(obj){
this.children ? this.children.push(obj) : this.children= [obj];
},
addParent: function(linkedFieldName, parentClassName, parentId){
this.parent=[linkedFieldName, parentClassName, parentId];
},
addObject: function(obj){
this.objects.push(obj);
},
isRelatedBy: function(relation){
this.relation=relation;
},
send: function(){
var obj = this;
$.ajax({
type: "POST",
dataType: "json",
url: "php/parseFunctions.php",
data: {data:obj},
success: function(response) {
// do stuff
},
error: function(response) {
// do stuff
}
});
}
});
А вот как Im пытается использовать класс:
var testObject = new ParseObject('TestObject');
testObject.set('callback','testResopnse');
testObject.set('command','save');
testObject.set('title','New Title');
testObject.set('description','New Description');
testObject.set('stuff',['one','two','three']);
testObject.addParent(['parent', 'MeComment', 'kRh5xcpkhz']);
testObject.send();
Все работает как ожидается, пока не доберусь до testObject.send();
Что я ожидаю для ниже объекта присылают на мой PHP странице:
Но вместо того, что я получаю «Uncaught RangeError: Максимальный размер стека вызовов превысил»
Почему это произойдет, и как я могу достичь желаемого результата?
Обновление: #
За предложение Квентина, это заставило меня отсортирован
var obj =$.parseJSON(JSON.stringify(this));
@GobSmack - Ничто в вопросе не предполагает, что Ajax-звонок должен отправить JSON. PHP не будет разбирать JSON по умолчанию. – Quentin
Можете ли вы опубликовать фрагмент страницы PHP? – lssilveira
Функция 'addParent' ожидает 3 параметра, вы передаете только массив. Но это не должно вызывать ошибки. – blex