2013-04-10 2 views
-1

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

Я пытаюсь передать аргумент term, присвоенный data: function (term, page) функции generateUrl под ней. this.term = term и window.term = term (что я знаю, это плохая практика) не работают. Должен ли я попытаться объявить переменную term за пределами $(document).ready(function) или за пределами двух внутренних функций, или я должен переместить определение generateUrl внутри функции $("#example").select2?

$(document).ready(function(){ 

    $("#example").select2({ 
     ajax: { 
      url: generateUrl(), 
      data: function (term, page) { 
      this.term = term; // i want to pass this local variable to generateUrl 
      } 
     } 
    }); 

    function generateUrl(term) { 
    (function ($) { 

    var args = 'keywords=' + term; 
    return args; 

    } 
    (jQuery)); 
    } 
}); 
+2

Просто позвоните generateUrl (термин) – bfavaretto

+0

я получаю «ReferenceError: термин не определен» – keypulsations

+0

я должен отметить, что я был опуская код для ясности. просто представьте, что я хочу построить переменную «args» внутри generateUrl с аргументом «term», переданным в #example – keypulsations

ответ

1
$(document).ready(function(){ 

$("#example").select2({ 
    ajax: { 
     url: generateUrl(), /* You are calling generateUrl without parameter, 
           this will cause error 
          Did you actualy mean generateUrl(term) ? */ 
     data: function (term, page) { 
     this.term = term; // i want to pass this local variable to generateUrl 
     generateUrl(this.term); /* Is this what you want to do? */ 
     } 
    } 
}); 

function generateUrl(term) { 
    (function ($) { 

    var args = 'keywords=' + term; 
    return args; 

    } 
(jQuery)); 

} });

+0

, к сожалению, это не работает (все еще не указано ReferenceError: термин не определен) – keypulsations

+0

Я обновил ответ. – user2015338

0

Вы должны заглянуть в select2 documentation, пример в разделе «Загрузка удаленных данных» - это именно то, что вы ищете. Исходя из этого, я считаю, что ваш код должен быть:

$(document).ready(function(){ 
    $("#example").select2({ 
     ajax: { 
      url: "", // replace that empty string with your ajax base url 
        // (without any parameters) 
      data: function (term, page) { 
       return { keywords : term }; 
      } 
     } 
    }); 
}); 
Смежные вопросы