#jquery
#jquery
Вопрос:
В примере jquery я видел, что обычно для определения функции успеха внутри $.ajax() мы можем переместить ее за пределы тела.
Комментарии:
1. Вы должны объяснить, зачем вам это нужно?
2. @Shakti Singh: нет, он не обязан. Это довольно тривиально — например, когда нам нужно иметь один и тот же обработчик для нескольких
$.ajax
, или когда функция уже где-то определена.
Ответ №1:
Если вы имеете в виду что-то вроде этого:
function onSuccess()
{
$(this).addClass("done");
}
$.ajax({
url: "test.html",
context: document.body,
success: onSuccess
});
тогда да, вы можете это сделать.
Комментарии:
1. почти 1-ред. пожалуйста, передайте
msg
,msg.d
что угодно. иначе какой смысл?
Ответ №2:
Да, конечно. Вы можете назначить анонимную функцию переменной:
var handleSuccess = function(data) {
alert(data);
};
или вы можете сделать это именованной функцией:
function handleSuccess(data) {
alert(data);
}
Для обеих альтернатив вы просто используете имя переменной / функции в объекте:
$.ajax({
success: handleSuccess
...
});
Комментарии:
1. почему указание данных таким образом является ошибкой success: handleSuccess(данные)
2. @user705414: Поскольку затем вы вызовете функцию и поместите возвращаемое значение в объект, вы хотите поместить ссылку на функцию в объект.
Ответ №3:
Я использую dojo чаще, чем jquery, но идея та же. Пока вызов ajax может ссылаться на эту внешнюю функцию, нет причин, по которым вы не можете этого сделать. Вы можете столкнуться с проблемой, заключающейся в том, что при вызове этой ajax-функции она больше не сможет получить доступ к функции успеха, в зависимости от того, как вы все настроили. dojo.hitch (контекст, функция) исправит это за вас.