Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3052 / 1058 / 476
Регистрация: 29.05.2016
Сообщений: 4,446
1

Результат нажатия кнопки без обновления страницы

19.02.2023, 22:09. Показов 415. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Есть простейшая web-форма для ввода значения логина и кнопка "Поиск" (get-запрос). При нажатии на кнопку на сервере происходит поиск рабочей станции пользователя и пароля локального администратора. Подскажите, пожалуйста:
1) Как реализовать вывод без обновления страницы в двух случаях
а) Успех:
- Имя компьютера - $PC
- Пароль - $password
б) Неуспех:
Для данного пользователя рабочая станция не найдена
Заранее благодарен!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2023, 22:09
Ответы с готовыми решениями:

Как отправить все чекбоксыы без обновления страницы и без нажатия кнопки?
Нужно обновлять данные без перезагрузки и без нажатия кнопки на странице, пишу так: <form...

Checkbox ajax php отправка без обновления страницы и без кнопки
Здравствуйте! Можете пожалуйста дать простой пример, понятный без лишних строк, который бы...

Как сделать чтобы код выводил результат без обновления страницы?
Доброго времени суток, господа! Есть данный код: <form action="qq.php" method="post">...

После нажатия кнопки "отправить комментарий" зависает отправка и публикуется только после обновления страницы
Добрый день. После нажатия кнопки "отправить комментарий" зависает отправка коммента и...

7
2992 / 1166 / 315
Регистрация: 14.03.2022
Сообщений: 2,833
20.02.2023, 10:52 2
Лучший ответ Сообщение было отмечено Karen87 как решение

Решение

Karen87, предложу такую модельку...

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<form>
    <label>Логин 
        <input name='login' />
    </label>
    <button>Поиск</button>
</form>
<p></p>
 
<script>
const ob = document.querySelector('button')
ob.addEventListener('click', e => {
    e.preventDefault()
    const o = document.querySelector('[name="login"]')
    const v = o.value
    const op = document.querySelector('p')
    if (!v) {
        op.textContent = 'Укажите логин...'
        return
    }
    o.value = ''
    ob.disabled = true
    op.textContent = `Поиск компа пользователя ${v}...`
    ajax('http://mysite.ru', v)
        .then(({PC, pass}) => {
            console.log(PC)
            op.innerHTML = PC 
                ? `- Имя компьютера - ${PC}<br />- Пароль - ${pass}` 
                : `Для данного пользователя (${v}) рабочая станция не найдена`
        })
        .catch(err => {
            op.textContent = 'Ошибка'
            console.log(err)
        })
        .finally(_ => ob.disabled = false)
    // эмулятор отправки запроса
    function ajax(url, data) {
        return new Promise((resolve, reject) => {
            setTimeout(_ => {
                // нашли
                resolve({PC: 'test', pass: 123})
                // не нашли
                //resolve({})
                // ошибка
                //reject(new Error('Что-то поломалось'))
            }, 2000)
        })
    }
})
 
</script> 
</body>
</html>
1
3052 / 1058 / 476
Регистрация: 29.05.2016
Сообщений: 4,446
20.02.2023, 12:49  [ТС] 3
krvsa, благодарю за решение. Автономно действительно работает так, как мне нужно, но при подключении к серверу я получаю лишь JSON-выхлоп. Поменял в Вашем коде:
PHP/HTML
1
2
3
4
5
6
<form form action="/get_pc">
    <label>Логин 
        <input name='login' />
    </label>
    <button>Поиск</button>
</form>
Нужно ли это было делать? Или достаточно было прописать в 29 строке роут?
0
2992 / 1166 / 315
Регистрация: 14.03.2022
Сообщений: 2,833
20.02.2023, 14:00 4
Karen87, ты же хочешь делать все без перезагрузки?
Тогда особого смысла у action формы нет. УРЛ можно указать и в самом запросе.

Цитата Сообщение от Karen87 Посмотреть сообщение
при подключении к серверу я получаю лишь JSON-выхлоп
Так это уже хорошо.
Остается только его преобразовать JSON.parse(<json_строка>). Понять нашлось что-то или нет. Ну и сформировать соответствующую строку сообщения.
0
3052 / 1058 / 476
Регистрация: 29.05.2016
Сообщений: 4,446
20.02.2023, 14:11  [ТС] 5
krvsa, помогли до ума довести. Спасибо!
0
3052 / 1058 / 476
Регистрация: 29.05.2016
Сообщений: 4,446
20.02.2023, 22:23  [ТС] 6
krvsa, Вы не подскажете, что нужно сделать, чтобы результат работы кнопки "Поиск" был между полем для ввода логина и кнопкой "Выход"? Сейчас результат выводится в самом верху, затирая приветствие
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<style>
div {
  text-align: center;
}
</style>
<p align="center"><b>Привет, $($data.Username)!</p><br>
<body>
<div>
<form form action="/get_pc">
    <label>Логин 
        <input name='login' />
        <input name="username" type="hidden" value="$($data.login)"/>
    </label>
    <button>Поиск</button>
</form>
<br>
<form form action="/logout">
    <button>Выход</button>
</form>
</div>
<p></p>
 
<script>
const ob = document.querySelector('button')
ob.addEventListener('click', e => {
    e.preventDefault()
    const o = document.querySelector('[name="login"]')
    const v = o.value
    const m = document.querySelector('[name="username"]')
    const n = m.value
    const op = document.querySelector('p')
    if (!v) {
        op.textContent = 'Укажите логин...'
        return
    }
    o.value = ''
    ob.disabled = true
    op.textContent = ``Поиск компьютера пользователя `${v}...``
    fetch('https://site.ru:8449/get_pc?login=' + v + '&username=' + n)
        .then(res => res.json())
        
        .then(({PC, pass}) => {
            console.log(PC)
            op.innerHTML = PC 
                ? ``- Имя компьютера - `${PC}<br />- Пароль - `${pass}`` 
                : ``Для данного пользователя (`${v}) рабочая станция не найдена``
        })
        .catch(err => {
            op.textContent = 'Ошибка'
            console.log(err)
        })
        .finally(_ => ob.disabled = false)
 
})
 
</script> 
</body>
</html>
Добавлено через 4 минуты
P.S. На экранирование символов $ и ` не обращайте внимания, я использую специальный framework для создания web-приложений, который требует это делать при использовании js-скрипта в теге <script>
0
2992 / 1166 / 315
Регистрация: 14.03.2022
Сообщений: 2,833
20.02.2023, 22:42 7
Цитата Сообщение от Karen87 Посмотреть сообщение
что нужно сделать, чтобы результат работы кнопки "Поиск" был между полем для ввода логина и кнопкой "Выход"?
В своей модели я весь вывод сделал в "безымянный" абзац (твоя строка 26)
HTML5
1
<p></p>
Перенеси его в любое место (например между строками 20 и 21) и вывод будет там.
1
3052 / 1058 / 476
Регистрация: 29.05.2016
Сообщений: 4,446
20.02.2023, 22:42  [ТС] 8
krvsa, разобрался сам, спасибо!
0
20.02.2023, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2023, 22:42
Помогаю со студенческими работами здесь

Как отловить событие обновления? (нажатия кнопки F5)
How to catch event when user press 'Refresh' button(or F5)? Any help ,please Thanks in...

Получить данные с сервера без обновления страницы и без ajax
Допустим есть такая ссылка www.example.com/getimage.php/?f=file_name В браузере ява-скрипт...

Результат теста после нажатия соответствующей кнопки
Есть тест, где сразу подсчитывается результат Как сделать, чтобы по нажатию кнопки, показывать...

После нажатия кнопки выполнить c++ builder не выводить результат
W7,64bit,borland c++builder 6 enterprise После нажатия кнопки выполнить c++ builder не выводить...

Отображение страницы с одного нажатия кнопки
Доброго всем времени суток! Написал следующий код public partial class WebFormMain :...

Как результат нажатия кнопки послать в Memo для дальнейшего использования?
Здравствуйте. Подскажите, пожалуйста, если у меня при нажатии кнопки генерируются 2 числа, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru