Здравствуйте. На сайте есть кнопка, при нажатии на которую генерируется хэш, который мне нужно получить. Этот хэш я могу посмотреть через дебаггер браузера, нажав на кнопку и посмотрев, какой я получаю response от сервера после этого.
Как это сделать автоматически? Т.е. как можно получить response после нажатия на кнопку программно?
Вот баттон в дебагере :
вот что получаю после нажатия на кнопку в дебагере браузера в разделе network :
Если просто нужно получить данные, можно попробовать jquery
.submit
сабмитит форму, передает в переменную data
и затем отправляем через json. Ответ с сервера отображаем в браузере через console.log()
.
Чтобы работало у вас, нужно поменять на свои параметры эти два значения:
/index.php
,$("#form_id")
<script>
$("document").ready(function() {
$("#form_id").submit(function(event) {
event.preventDefault();
data = $(this).serialize();
$.ajax({
type: "POST",
dataType: "json",
url: "/index.php",
data: data,
success: function(otvet) {
console.log(otvet);
}
});
return false;
});
});
</script>
Файл php
:
function is_ajax() {
return isset($_SERVER ['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER ['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
if(is_ajax()){
// здесь обращаемся к $_POST['...'] чтобы извлечь данные из приехавшей формы
echo json_encode(array('post'=>serialize($_POST))); // просто чтобы в браузере увидеть данные
// echo json_encode(array('status'=>1));
}
Найдите место, куда сохраняется этот хэш, назначьте ловушку-прокси на объект или Observer
на DOM.
И получайте хэш.
Пример:
let view = document.querySelector('#view'),
data = {
hash: ''
};
document.querySelector('#getHash').addEventListener('click', _ => {
// Допустим, здесь будет асинхронная операция на 0.5sec
// Эмуляция запроса
setTimeout(_ => {
view.innerHTML = '76d80224611fc919a5d54f0ff9fba446'; // DOM
data.hash = '76d80224611fc919a5d54f0ff9fba446'; // JS object
}, 500);
});
// Отслеживаем изменения в DOM (вставку хэша в span#view)
new MutationObserver(ms => ms.forEach(m => useHash(m.target.innerHTML)))
.observe(view, {childList: true});
// Отслеживание изменения JS объекта, куда сохраняют хэш
// Подменяем оригинальный объект на прокси с ловушкой на set
let _data = data;
data = new Proxy(_data, {
set(target, key, value){
if(key === 'hash')
useHash(value);
target[key] = value;
return true;
}
});
function useHash(hash){
console.info(`Мы добыли хэш: ${hash}`);
}
<input type='button' id='getHash' value='Получить хэш!' /><br />
Хэш: <span id='view'></span>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я только начил изучать Js это еще первые шаги )немогу найти ошибку может от того что устал)Но скрипт не работает
В общем единственная тема, которую я никак не могу понять - это рекурсияНаписал маленький код, но не понимаю как он работает до конца
Подскажите условие которое сравнивало бы два слова в двух столбцахНапример Если позиция (опоздание более 15 мин = согласовано то счетчик прибавлял...
Добрый деньДвижок использует такой метод записи значений в блоки: