Я новичок в javascript и пытаюсь понять, возможна ли следующая вещь:
Допустим, я использую следующую конструкцию ajax-запроса в нескольких местах в моем коде (с разными функциями обратного вызова - только в этом примереhandleSuccessCallback()
) и другой URL-адрес и параметр запроса данных:
jQuery.ajax({
type: 'GET',
url: loadUrl,
data: data,
error: errorCallback,
success: function(response) {
this.handleSuccessCallback(response);
}
});
function handleSuccessCallback(response) {
Do something with response here...
}
Я хотел реорганизовать этот код таким образом, что мне не нужно создавать конструкцию выше каждый раз, когда мне нужно отправить запрос. Я хотел создать функцию в своем классе утилит, которая будет принимать URL, запрашивать данные и обратный вызов ошибки / успеха. Примерно так:
function sendAjaxRequest(url, data, errorCallback, successCallback)
jQuery.ajax({
type: 'GET',
url: url,
data: data,
error: errorCallback,
success: successCallback
});
}
Затем я хотел вызвать эту функцию несколько раз, передавая разные аргументы из моего основного скрипта.
В моем основном коде:
var url = "https://some url";
var data = {};
var errorCallback = handleErrorCallback();
var successCallback = handleSuccessCallback(); // ??? This function requires `response` argument being passed, how it can be done?
utils.sendAjaxRequest(url, data, errorCallback, successCallback);
function handleSuccessCallback(response) {
Do something with response here...
}
function handleErrorCallback() {
Do something with error here...
}
Однако я не понимаю следующее: как передать функцию успешного обратного вызова (handleSuccessCallback(response)
) в функцию sendAjaxRequest()
, если моему handleSuccessCallback(response)
нужны параметры, являющиеся результатом успешного обратного вызова ajax (response
)?
Как я могу передать этот response
параметр в handleSuccessCallback()
при передаче его в sendAjaxRequest()
, еслиЯ еще не знаю, что будет response
от вызова ajax?