@tectolog

Как передать значение из одной страницы в скрипт формы, чтобы результат работы этого скрипта вывести в новой вкладке?

Привет всем.

Помогите разобраться в:
1. Ситуация:
на сайте среди прочих есть 2 страницы:
  • 1-ая (урл) - выводится список общих данных, среди которых есть серийные номера
  • 2-ая (урл) - выводится форма (method="POST") для поиска по серийному номеру и сам результат поиска, если поиск производится вручную (вбиваем серийный номер в поле и на этой же странице (урл-е) получаем результат поиска)


2.Вопрос:
реально ли, передав с 1-ой страницы через jquery ajax значение серийного номера в скрипт формы 2-ой страницы, вывести результат поиска в новой открытой вкладке?
Другими словами, обычно пользователь в 1-ой странице обнаруживает серийный номер (копирует его), далее в меню переходит на 2-ую страницу, вставляет в форму поиска серийный номер, жмет "искать" и получает на этой же 2-ой странице ниже результат поиска - вопрос: реально ли этот, в ручную осуществляемый, процесс превратить в программно выполняемый, чтоб по нажатию на серийный номер на 1-ой странице открывалась новая вкладка с уже найденными результатами поиска, ну, и сам серийный номер уже значился бы в соответствующем поле формы?

3. Примечание:
поискав в инете решения, нашел такие, что, да? новая вкладка открывается, но без результатов поиска и без серийника в соответствующем поле формы, хотя при этом функция ajax возвращает success как true

Заранее спасибо!
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 3
pickHabr
@pickHabr
fullstack разработчик
Привет)

Ну, можно сделать что-то вроде
1) Нужный номер подставить как query параметр ссылки на стороне js (htt://page2?number=123) или подставить в какое-то поле с id со стороны пхп прежде чем выплюнуть страницу
2) На второй странице
$( document ).ready(function() {
    // если передал через ссылку
    let params = window.location
                       .search
                       .replace('?','')
                       .split('&')
                       .reduce(
                          function(p,e){
                              let a = e.split('=');
                              p[ decodeURIComponent(a[0])] = decodeURIComponent(a[1]);
                              return p;
                          },
                          {}
                      );
    console.log( params);

    // если подставил в поле с бэка
    $("#id").val();
});


и все, дальше вертишь как хочешь, можешь подставить значение в нужную апишку, получить данные и отобразить на странице
Ответ написан
У вас 2 разных урла, которые показывают разную информацию. Не совсем понятно, куда и зачем вы отправляете ajax-запрос? Где вы информацию из ответа ajax хотите выводить?

реально ли, передав с 1-ой страницы через jquery ajax значение серийного номера в скрипт формы 2-ой страницы, вывести результат поиска в новой открытой вкладке?

Если вы хотите осуществить переход с одной страницы на другую, то в вашем контексте ajax теряет свой смысл.

реально ли этот, в ручную осуществляемый, процесс превратить в программно выполняемый, чтоб по нажатию на серийный номер на 1-ой странице открывалась новая вкладка с уже найденными результатами поиска, ну, и сам серийный номер уже значился бы в соответствующем поле формы?

Реально. И вам будет проще сделать серийные номера в виде ссылок и при нажатии на них переходить на 2 урл, передавая значение серийного номера в get-параметре. В скрипте на 2 урле из $_GET тянуть этот серийный номер, ну и дальше делать, то что вам нужно. Можете произвести поиск сразу при переходе, а можете значение подставить в поле формы по-умолчанию.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
На странице с серийными номерами каждый серийный сделайте ссылкой на вторую страницу, с аргументом вида server.net/page2.php?serial_id=AA12-34-5678.

Соответственно на второй странице сразу делайте поиск этого $_GET['serial_id'], и выводите результат. Ну или если форма нужна-нужна-всенепременнейше - рисуйте эту форму с заполненным из $_GET['serial_id'] полем серийного номера.

Всё!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы