обратный вызов $.getJSON работает

#javascript #jquery

#javascript #jquery

Вопрос:

Я экспериментирую с jQuery и пытаюсь использовать $.getJSON функцию

Я подчеркиваю, что «Ссылка на объявление функции в равной степени может быть предоставлена в качестве обратного вызова». Поэтому вместо анонимной функции я использую ссылку на объявление функции, подобное этому

 $('#letter-b').click(function(e) {
    e.preventDefault();
    $.getJSON('b.js', outside(data));
});

function outside (data){alert(data);}
  

Я не получаю предупреждения. Вместо этого я получаю Uncaught ReferenceError: data is not defined

Чего мне не хватает? Это мой синтаксис?

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

Ответ №1:

Вы должны указать ссылку на свою функцию. Вот так :

 $('#letter-b').click(function(e) {
    e.preventDefault();
    $.getJSON('b.js', outside);
});
  

Если вы пишете outside(data) , вы просто выполняете свою функцию.

Комментарии:

1. Спасибо, это работает. Но как data передается из обратного вызова в функцию, если не включать его в обратный вызов?

2. @slevin: Вы не можете включить его, потому что у вас нет data когда элемент щелкнут. getJSON Функция, когда у нее будут данные, будет вызывать функцию обратного вызова и передавать ответ.

3. jQuery передает данные вашей функции, когда они у нее есть. Так что вам не нужно задаваться вопросом, как вы это получаете.

4. @slevin под капотом getJSON функция при получении ответа выполняет что-то вроде callback.call( this, response ) , которая вызывает функцию, переданную как обратный вызов, и предоставляет контекст и аргумент.