У меня есть событие нажатия кнопки, в котором я выполняю несколько шагов. Первый шаг - это запрос ajax, а второй шаг - вызов функции, передающей имя кнопки в качестве параметра. Как мне этого добиться?

function buttonClick(e){
    var param1ToBePassed = 1;
    var param2ToBePassed = 2;
    $.when(func1())
    .done(function(){
        $.when(
         $.ajax({}),
         //here I want to call func2 passing in param1tobepassed and param2tobepassed
         funct2(param1ToBePassed, param2ToBePassed ) //this line isn't working
        )
        .done(()=>{console.log('ajax and func2 calls finished');})
    }

}

var func1 = function(){var deferred = new $.Deferred(); /*do somethig;*/ return deferred;}
var func2 = function(param1, param2){var deferred = new $.Deferred(); /*do somethig with param1 and param2;*/ return deferred;}

Как передать param1ToBePassed и param2ToBePassed в func2?

0
SoftwareDveloper 6 Окт 2021 в 20:23

2 ответа

Лучший ответ
function buttonClick(e){
    var param1ToBePassed = 1;
    var param2ToBePassed = 2;
    $.when(func1())
    .done(function(){
        $.when(
         $.ajax(),
         //here I want to call func2 passing in param1tobepassed and param2tobepassed
         funct2(param1ToBePassed, param2ToBePassed ) //this line isn't working
        )
        .done(function(){console.log('ajax and func2 calls finished');})
    });/// I have corrected this added closeing )

}

var func1 = function(){var deferred = new $.Deferred(); /*do somethig;*/ 
return deferred;
}
var func2 = function(param1, param2){var deferred = new $.Deferred(); /*do somethig with param1 and param2;*/
return deferred;
}
0
Irakli Shalamberidze 7 Окт 2021 в 21:09

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

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

function buttonClick(e) {
    var param1ToBePassed = 1;
    var param2ToBePassed = 2;

    $.ajax({
        url: 'YOUR_REQUEST_URL',
        method: 'POST', // or GET
        data: {
            // any data to parse?
        },
        success:function(response){                 
            func1(); // this will run on success.
        }
    });
    
    func2(param1ToBePassed, param2ToBePassed); // this will run in parallel with the AJAX function.
}

Объяснение функции AJAX:

  1. url: здесь вы определяете путь запроса.

  2. method: здесь вы определяете метод, например POST или GET запрос.

  3. данные: здесь вы можете проанализировать некоторые данные с вашим запросом (например, для данных или чего угодно).

  4. успех: это функция успеха запроса AJAX. Он будет запущен после успешного запроса.

0
Martin 6 Окт 2021 в 17:52