Я пытаюсь добиться следующего:
- Пользователь нажимает на элемент и вызывается функция cmove (работает)
- cmove передает объект JS методу ajax (работает)
- Метод ajax отправляет объект в контроллер перемещения / тестирования (PHP / CodeIgniter) (работает)
- контроллер возвращает некоторые данные JSON (работает)
- onSucces вызывает метод move, чтобы сделать что-то (нет шансов вызвать этот метод)
Итак, как я могу вызвать метод move из onSuccess? И есть ли лучший способ протолкнуть moveObj?
var Plane = new Class({
Implements: Options,
options: {
action: null
},
initialize: function(options) {
this.setOptions(options);
$('somelement').addEvent('click', this.cmove.bind(this));
},
cmove: function(event, action) {
moveObj = new Object();
moveObj.x = 123;
this.ajax('cmove', moveObj);
},
move: function(moveObj) {
console.log("Yippe!"); // not getting here :(
},
ajax: function(action, obj) {
resp = $('resp');
var myRequest = new Request.JSON({
url: '<?php echo site_url('move/test'); ?>',
method: 'get',
onRequest: function(){
resp.set('text', 'wait...');
},
onSuccess: function(responseText){
switch(action)
{
case 'cmove':
test3.move(responseText); // not working
this.move(responseText); // not working
parent.move(responseText); // not working
resp.set('text', responseText.x);
break;
},
onFailure: function(){
resp.set('text', 'Sorry, your request failed :(');
}
}).send('coords='+ JSON.encode(obj));
}
});
window.addEvent('domready', function(){
var test3= new Plane({});
});