Получить данные из формы

395
31 декабря 2016, 16:33

Здравствуйте. На сайте есть кнопка, при нажатии на которую генерируется хэш, который мне нужно получить. Этот хэш я могу посмотреть через дебаггер браузера, нажав на кнопку и посмотрев, какой я получаю response от сервера после этого.

Как это сделать автоматически? Т.е. как можно получить response после нажатия на кнопку программно?

Вот баттон в дебагере :

вот что получаю после нажатия на кнопку в дебагере браузера в разделе network :

Answer 1

Если просто нужно получить данные, можно попробовать 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)); 
    }
Answer 2

Найдите место, куда сохраняется этот хэш, назначьте ловушку-прокси на объект или 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>

READ ALSO
Почему не срабатывает скрипт?

Почему не срабатывает скрипт?

Я только начил изучать Js это еще первые шаги )немогу найти ошибку может от того что устал)Но скрипт не работает

387
Рекурсия и стек

Рекурсия и стек

В общем единственная тема, которую я никак не могу понять - это рекурсияНаписал маленький код, но не понимаю как он работает до конца

393
Как произвести сравнение двух столбцов js

Как произвести сравнение двух столбцов js

Подскажите условие которое сравнивало бы два слова в двух столбцахНапример Если позиция (опоздание более 15 мин = согласовано то счетчик прибавлял...

461
Записать значение в data-атрибут

Записать значение в data-атрибут

Добрый деньДвижок использует такой метод записи значений в блоки:

426