2015-02-14 2 views
0

У меня есть набор функций тайм-аута внутри одной функцииИспользование переменной вне функции Ajax успеха

function myFunction() 
{ 
    var data; 

    setTimeout(function(){ 
     $.ajax({ 
     //My Ajax Junk 
     success: function(data) { 
      var data = data.trim(); 
      // I want to be able to use this later on. 
     } 
     }): 
    }, 6000); 

    setTimeout(function(){ 
     var shipping = 'f_name='+f_name+data; 
     // Append data from previous call to shipping 
    }, 12000); 
} 

Я желающему получить данные из функции Ajax успеха, а затем использовать его в следующей функции тайм-аута добавив его к переменной доставки. Я объявил переменные данные вне всех функций, а затем попытался добавить к ним данные успеха. Когда я предупреждаю о переменной доставки, она не показывает ничего лишнего (что должны добавлять данные).

Данные возвращаются, потому что я вижу это в Google Chromes Network Tab.

Как установить переменную, которая будет использоваться по всей функции!?!?!?!?

Заранее спасибо.

Кроме того, функция успеха возвращается перед вызовом для добавления данных из-за функций таймаута. Я играл с ними, чтобы быть установленными для этого экземпляра.

+0

Вы должны прочитать этот вопрос http://stackoverflow.com/questions/142 20321/how-to-return-the-response-from-a-ajax-call – Musa

ответ

0

Используйте другое имя для глобальной переменной, как global_data и в Аякса присвоить значение данных с использованием global_data = data.trim()

+0

Мне все еще нужно подождать 6 минут, прежде чем принимать ответы, хотя это я принимаю. Как только вы подумаете об этом, это имеет смысл! Спасибо, что указали. – moevans

0

Как плохо: до вашего var data; и изменить var data = data.trim(); к tdata = data.trim(); из функции:

var tdata; 
function myFunction(){ 

    setTimeout(function(){ 
     $.ajax({ 
     //My Ajax Junk 
     success: function(data) { 
      tdata = data.trim(); 
      // I want to be able to use this later on. 
     } 
     }): 
    }, 6000); 

    setTimeout(function(){ 
     var shipping = 'f_name='+f_name+tdata; 
     // Append data from previous call to shipping 
     }, 12000); 

}

+0

Вам нужно изменить имя переменной. Данные используются как имя аргумента функции успеха. – Faris

+0

Спасибо за исправление: 3 – RedBuld

0
function myFunction() 
{ 
    var data; 

    setTimeout(function(){ 
     $.ajax({ 
     //My Ajax Junk 
     success: function(resp) { 
      data = resp.trim(); // Dont declare it inside 
      // I want to be able to use this later on. 
     } 
     }): 
    }, 6000); 

    setTimeout(function(){ 
     var shipping = 'f_name='+f_name+data; 
     // Append data from previous call to shipping 
    }, 12000); 
} 
Смежные вопросы