Почему не записывает данные в переменную data в success?
Внутри этой функции все ок, но
SomeClass.prototype.foo = function(id){
var data = false;
ajax({
method: 'POST',
url: 'test.php',
params: 'id='+id,
success: function(response){
data = response; // ответ получен
}
});
return data;
}
пробовал и так:
var data = function(response){
return response;
}
ajax({
method: 'POST',
url: 'test.php',
params: 'id='+id,
success: data
});
return data();
Но это работает
function foo(obj){
obj.test('Hello, World');
}
function bar(){
var data;
foo({
test: function(response){
data = response;
}
})
return data;
}
console.log(bar()); //hello world
Извиняюсь, спойлера не нашел, поэтому скидываю (на всякий случай) обертку для Ajax.
function ajax(setting){
setting.method = setting.method === undefined ? 'GET' : setting.method;
setting.params = setting.params === undefined ? null : setting.params;
if (setting.url === undefined || typeof setting.success !== 'function' || (setting.method === 'POST' && setting.params === null)) return false;
var xmlhttp,
send = setting.method === 'GET' ? null : setting.params,
url = setting.method === 'GET' ? setting.url + setting.params : setting.url;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e){
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest !== 'undefined'){
xmlhttp = new XMLHttpRequest();
}
xmlhttp.open(setting.method, url, true);
if (setting.method === 'POST'){
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
}
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4){
if (xmlhttp.status == 200){
setting.success(xmlhttp.responseText);
}
}
}
xmlhttp.send(send);
}
Вопрос возможно банальный, но...