2014-12-10 2 views
0
$.namespace('MyClass'); 
MyClass.setDataResponse: function(URL, dataObj, successcallback, failurecallback){ 
     $.ajax({ 
      url: URL, 
      async: false, 
      type: 'POST', 
      data: dataObj, 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success : successcallback, 
      error : failurecallback 
     }); 
    } 

var dataObj = '{"id": "5"}'; 
function SuccessCall(res){ 
    return res; 
} 
var getdata = MyClass.setDataResponse('requesturl', dataObj, SuccessCall); 

console.log(getdata); 

Почему getdata не определена ... пока успех - это возврат obj.Переменная неопределенная когда-то при вызове ajax

, как можно достичь GetData как обратный объект ..

+0

Вы не можете 'return' от вызова AJAX - использовать функцию обратного вызова. – tymeJV

+3

FYI, функция не имеет оператора 'return', он всегда будет возвращать' undefined'. 'MyClass.setDataResponse' не имеет оператора' return', следовательно, он будет возвращать 'undefined'. Даже без вызова функции async, который будет иметь место и не должен быть для вас сюрпризом. –

+1

Старайтесь не использовать 'async: false' – Bergi

ответ

0

Функции, выполняемой после получения от ответа, не могут возвращать значение.

$.ajax({ 
    'url' : 'someurl', 
    'success' : function(response) { 
     // cant return values; 
     // it can work only inside of here 
    } 
}); 

Слишком

function dowork(response) { 
     // cant return values; 
     // it can work only inside of here  
} 

$.ajax({ 
    'url' : 'someurl', 
    'success' : dowork 
}); 
Смежные вопросы