Вызов функции из оператора if - PullRequest
0 голосов
/ 20 января 2020

У меня есть кнопка в моем пользовательском интерфейсе, которая при нажатии проверяет URL текущей вкладки по сравнению с той, которая передается из базы данных. Если они совпадают, я хочу вызвать функцию, которая делает вызов ajax, чтобы получить некоторые данные. Мой код выглядит следующим образом:

('#automate').click(automateButton);


                       function automateButton() {
                            if(webpageUrl == activeTabUrl){
                                //call function here
                            }
                            else {
                                // Window opens
                                window.open(webpageUrl);
                            }
                        }

Это мой ajax вызов:

$('#scenarioDropdownList').change(function () {
    var scenarioId = $('#scenarioDropdownList option:selected').attr('id');
    getData(scenarioId); 
    });

    function getData(scenarioId) {
        $.ajax({
            type: "GET",
            url: 'http://localhost:54442/api/scenariodatas/GetScenarioData',
            data: {scenarioId: scenarioId},
            dataType: 'JSON',
            success: scenarioData,
            error: function(){
                    console.log("There has been an error retrieving the data");
            }
        });
    }

    function scenarioData(response) {
        $.each(response, function(key, val) {
                var fieldType = val.fieldType;
                var fieldName = val.fieldName;
                var fieldValue = val.fieldValue;

                var field = $(fieldName);
            })
        }

Я хочу иметь возможность вызвать вызов ajax изнутри оператора if , Как бы я go об этом?

РЕДАКТИРОВАТЬ Когда у меня есть автономный вызов ajax и console.log переменных, я возвращаю правильные данные. К сожалению, когда я вставляю его в оператор if или ссылаюсь на функцию, которая его окружает, значения не регистрируются. Нет сообщения об ошибке просто не работает, как это происходит, когда ajax вызов является автономным.

1 Ответ

0 голосов
/ 20 января 2020

Вы можете использовать $('#scenarioDropdownList').change(); непосредственно внутри оператора if, чтобы вызвать событие change:

$('#scenarioDropdownList').change(function () {
    console.log("Calling ajax");
});

$('#automate').click(automateButton);


function automateButton() {
  $('#scenarioDropdownList').change();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="scenarioDropdownList">
  <option>foo</option>
  <option>bar</option>
</select>

<button type="button" id="automate">Automate</button>

Или переместите содержимое события для $('#scenarioDropdownList').change(function () { ... }) в отдельную функцию, которую вы будете вызывать из оператора if

$('#scenarioDropdownList').change(ajaxCall);

$('#automate').click(automateButton);


function automateButton() {
  ajaxCall();
}

function ajaxCall()
{
  console.log("Calling ajax");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="scenarioDropdownList">
  <option>foo</option>
  <option>bar</option>
</select>

<button type="button" id="automate">Automate</button>
...