Как передать параметры методу обратного вызова jQuery $ .getJSON?

Я пытаюсь использовать jQuery для вызова пользовательского API через Ajax / $ .getJSON .

Я пытаюсь передать пользовательское значение в метод обратного вызова Ajax, но это значение не передается и фактически перезаписывается. Это мой код:

var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;

$("#loading_status").show();

$.getJSON(url, null, function(results, locationType) {
    searchResults(results, locationType)
});

Значение locationType ДО того, как я вызываю URL-адрес с помощью AJAX, равно 3 . Но после того, как вызов успешно возвращает данные, значение для locationType теперь success . Это связано с тем, что сигнатура метода обратного вызова :

обратный вызов (данные, textStatus) Функция обратного вызова , которая выполняется, если запрос завершается успешно.

Как передать 1 или несколько параметров методу обратного вызова?

25
задан Ivar 10 November 2017 в 13:47
поделиться

4 ответа

Вам не нужно передавать его, просто ссылайтесь на переменную, которая у вас уже есть, вот так:

var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;
$("#loading_status").show();
$.getJSON(url, null, function(results) {
    searchResults(results, locationType)
});

Также не нужно передавать null, если у вас нет объекта данных, это необязательный параметр, и jQuery проверяет, является ли второй параметр функцией или нет, так что вы можете просто сделать это:

$.getJSON(url, function(results) {
    searchResults(results, locationType)
});
19
ответ дан 28 November 2019 в 21:08
поделиться

Деформация функции, например

function getResults(locationType) {
    $.getJSON(url, null, function(results) {
        searchResults(results, locationType)
    });
}

Но в вашей конкретной ситуации вам даже не нужно его передавать, вы можете получить доступ к значению непосредственно в обратном вызове.

18
ответ дан 28 November 2019 в 21:08
поделиться

Вы можете использовать метод .ajax :

var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;
$.ajax({
    url: url,
    context: { lt: locationType },
    success: function(results) {
        searchResults(results, this.lt);    
    }
});
4
ответ дан 28 November 2019 в 21:08
поделиться

Если вы хотите использовать locationType (значение которого 3 ) в обратном вызове, просто используйте

function(results) { .....

благодаря ] closures , locationType будут автоматически доступны в обратном вызове.

2
ответ дан 28 November 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: