#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 )
, которая вызывает функцию, переданную как обратный вызов, и предоставляет контекст и аргумент.