2016-06-18 3 views
0

Что было бы лучшим способом получить значение переменной «поиск» из первой функции, чтобы использовать ее при последнем вызове ajax? Я знаю, что могу использовать закрытие, но не знаю, как это сделать. Вот мой код:Использование локальной переменной из функции обработчика событий, которая делает вызов ajax в Javascript

$(document).on("click", ".box", function(){ 
    var search = $(this).attr("alt"); 
    $.ajax({ 
     method: "GET", 
     url: url + search, 
     success: function(data){ 
      console.log(data); 
     } 
    }) 
}); 

$(".select").change(function(){ 
var param2 = $(this).val(); 
$.ajax({ 
    method: "GET", 
    url: url + search + param2, 
    success: function(data){ 
     console.log(data); 
    } 
    }) 
}); 
+0

У вас есть несколько '.box's на вашей странице? Если нет, почему бы просто не сохранить его в константе в вашем JavaScript-коде? – Timo

+0

Да, но, к сожалению, у меня несколько ... – ConfusedLuigi

+1

Просто объявите переменную за пределами двух функций, и она будет доступна в обоих. И добавьте тест в обработчик изменений, чтобы подтвердить, что он был установлен (в случае, если пользователь изменяет значение выбора, не нажав на поле). – nnnnnn

ответ

1

Использование укупорочное так просто, как объявить переменную вне сферы обеих функций:

var search; 

$(document).on("click", ".box", function(){ 
    search = $(this).attr("alt"); 
    $.ajax({ 
    method: "GET", 
    url: url + search, 
    success: function(data){ 
     console.log(data); 
    } 
    }) 
}); 

$(".select").change(function(){ 
var param2 = $(this).val(); 
$.ajax({ 
    method: "GET", 
    url: url + search + param2, 
    success: function(data){ 
     console.log(data); 
    } 
    }) 
}); 
+0

Единственное, что я предположил, не будет работать. Благодаря!! – ConfusedLuigi