определение функции обратного вызова jQuery ajax success
Я хочу использовать jQuery AJAX для извлечения данных с сервера.
Я хочу поставить определение функции обратного вызова успеха вне .ajax()
блок, как показано ниже. Так что мне нужно объявить переменную dataFromServer
как показано ниже, чтобы я мог использовать возвращенные данные из обратного вызова успеха?
Я видел, что большинство людей определяют успех обратного вызова внутри .ajax()
блок. Так что следующий код правильный, если я хочу определить успешный обратный вызов снаружи?
var dataFromServer; //declare the variable first
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData(dataFromServer)
})
}
function handleData(data) {
alert(data);
//do some stuff
}
8 ответов:
просто использовать:
function getData() { $.ajax({ url : 'example.com', type: 'GET', success : handleData }) }
The
success
свойства требуется только ссылка на функцию, и передает данные в качестве параметра этой функции.вы можете получить доступ к как это так
handleData
объявлена. JavaScript будет анализировать ваш код для объявлений функций перед его запуском, поэтому вы сможете использовать функцию в коде, который находится перед фактическим объявлением. Это известно как поднимать.этот не считается для функций, объявленных так, хотя:
var myfunction = function(){}
они доступны только тогда, когда переводчик передал их.
см. этот вопрос для получения дополнительной информации о 2 способах объявления функций
"новый" способ сделать это с jQuery 1.5 (Jan 2011) заключается в использовании отложенных объектов вместо передачи
success
обратный. Вы должны возвращение результат$.ajax
и затем использовать.done
,.fail
методы etc для добавления обратных вызовов за пределами$.ajax
вызов.function getData() { return $.ajax({ url : 'example.com', type: 'GET' }); } function handleData(data /* , textStatus, jqXHR */ ) { alert(data); //do some stuff } getData().done(handleData);
этой отделение обратного вызова обработки из обработки AJAX, позволяет добавить несколько обратных вызовов, вызовы недостаточность, и т. д., Все без необходимо изменить оригинал
Я не знаю, почему вы определяете параметр вне скрипта. В этом нет необходимости. Ваша функция обратного вызова будет вызвана с возвращаемыми данными в качестве параметра автоматически. Очень возможно определить ваш обратный вызов вне
sucess:
т. е.function getData() { $.ajax({ url : 'example.com', type: 'GET', success : handleData }) } function handleData(data) { alert(data); //do some stuff }
будет вызвана функция handleData и передан ей параметр с помощью функции ajax.
попробуйте переписать обработчик успеха в:
success : handleData
свойство success метода ajax требует только ссылки на функцию.
в вашей функции handleData вы можете взять до 3 параметров:
object data string textStatus jqXHR jqXHR
Я бы написал :
var dataFromServer; //declare the variable first var handleData = function (data) { alert(data); //do some stuff } function getData() { $.ajax({ url : 'example.com', type: 'GET', success : handleData }) }
вам не нужно объявлять переменную. Функция успеха Ajax автоматически принимает до 3 параметров:
Function( Object data, String textStatus, jqXHR jqXHR )
через несколько часов играть с ним и почти скучно. чудо пришло ко мне, оно сработало.
<pre> var listname = []; $.ajax({ url : wedding, // change to your local url, this not work with absolute url success: function (data) { callback(data); } }); function callback(data) { $(data).find("a").attr("href", function (i, val) { if( val.match(/\.(jpe?g|png|gif)$/) ) { // $('#displayImage1').append( "<img src='" + wedding + val +"'>" ); listname.push(val); } }); } function myfunction() { alert (listname); } </pre>