Получить значение текстового поля ПОСЛЕ установки его через AJAX - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующий код, который берет значение из идентификатора текстового поля fileno и использует его для создания URL-адреса для вызова AJAX. Результат вызова AJAX затем используется для заполнения другого текстового поля filename.

$('#loadbtn').click(function() {
   var url = 'loadfile.php?fn=' + $('#fileno').val();

   $.getJSON(url, function(data) {              
   $('#filename').val(data[0]['NameFile']).prop("disabled", true);
});

Это работает, как и предполагалось, однако затем я хочу выполнить второй AJAX вызов , используя значение filename.

Назначение $('#filename').val() переменной или добавление ее в строку URL не работает. В нем указано неопределенное, хотя текстовое поле заполняется на странице.

1 Ответ

0 голосов
/ 27 апреля 2020

Комментаторы пытаются вам сказать, что приведенный пример кода не показывает, как осуществляется доступ к значению. Это (очень распространенная проблема восприятия), когда начинается работа с асинхронными запросами (например, $.ajax, $.get, $.post, $.getJSON, et c. В jQuery), поскольку данные не сразу доступны, но будут позже при обратном вызове к данный обработчик, как только запрос был решен. Пример кода также недействителен Javascript.

$('#loadbtn').click(function() {
    let url = 'loadfile.php?fn=' + $('#fileno').val();

    $.getJSON(url, function callback(data) {              
        $('#filename').val(data[0]['NameFile']).prop("disabled", true);

        // You now have $('#filename').val() to access, or data[0]['NameFile']
        console.log('Filename loaded', $('#filename').val())
    });

    // You DO NOT have $('#filename').val() to access, since this code is synchronous
    console.log('Filename will not be loaded', $('#filename').val())
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...