JavaScript — PHP обрабатывает http-запрос с одной страницы и отображает его на другой

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

Было бы здорово, если бы вы могли показать мне логические шаги, которые мне нужно выполнить, чтобы выполнить задачу передо мной.

Работа с PHP здесь. Мне нужно выяснить, как отправить запрос GET с одной страницы / веб-приложения и обработать, а также отобразить его на другой.

Простой пример:

Есть 2 страницы php, одна для отправки запроса — send.php, другая для обработки и отображения display.php

send.php содержит простую форму для получения некоторой пользовательской строки ввода и использует метод get для отправки ее на display.php

<form action="display.php" method="get">
<input type="text" name="userInput">
<input type="submit">
</form>

display.php получает строку и использует ее в качестве параметра для некоторой функции и повторяет ее.

Какие логические шаги мне нужно выполнить, чтобы иметь возможность открыть send.php в одном окне, display.php в другом, ввести что-то в форму, нажать submit и увидеть результаты в окне display.php вместо обычного перенаправления на display.php из send.php? Насколько я знаю, AJAX позволяет нам общаться с сервером, но результат все равно возвращается на ту же страницу. Прошу прощения за мое невежество, я ищу логические шаги к решению, может быть, определенные технологии или методы, о которых я в данный момент не знаю, что-то, на что нужно обратить внимание и найти способ выполнить эту задачу.

Актуальной задачей является работа с системой управления запасами: мы должны иметь возможность сканировать штрих-коды / идентификаторы и т. Д. С помощью одного устройства, одновременно просматривая информацию об элементах на другом экране (подумайте: сканирование штрих-кодов с помощью приложения для Android, отправка его на веб-интерфейс система инвентаризации, которая открывается на планшетном компьютере или что-то в этом роде и просматривает информацию об элементе на указанном планшете).

Примечания: нам явно сказали не использовать java / scala, потому что sys-admin не хочет, чтобы jvm работал на том же сервере, что и система инвентаризации (по-видимому, только один сервер выделен для этого), я предполагаю, что node.js также попадает в та же лодка, хотя я не уверен.

Спасибо за ваше терпение, занимающееся полной веб-разработкой noob 🙂

0

Решение

Поэтому, после более глубокого анализа вашей OP (Original Post), я считаю, что для вас будет работать следующее:

В send.php: используйте Ajax для сохранения каждого отсканированного штрих-кода в базе данных. Это объясняется тем, что вы не перенаправляете в другое место. AJAX просто ищет php-файл, который выполняет всю работу по сохранению (которую вы можете назвать process.php).

В display.php: извлечь все штрих-коды из базы данных и отобразить их. Это можно сделать прямо с помощью встроенного PHP или, если вы хотите делать это много раз, используйте AJAX.

С этой структурой вы можете видеть все сохраненные штрих-коды независимо от того, в каком окне или устройстве вы находитесь.

0

Другие решения

Вы могли бы использовать веб-сокеты и сервер, который поддерживает это как node.js
https://www.websocket.org/demos.html

через php длинным опросом
http://webcooker.net/ajax-polling-requests-php-jquery/

это также возможно с помощью postMessage
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

1

Посмотрим, получу ли я тебя.

Что вы хотите, чтобы, когда пользователь нажимает на кнопку «Отправить», он открывает на той же странице, display.php файл без перенаправления, чтобы добавить новую информацию, а затем вернуться к send.php страница?

Ну, как я вижу, вы можете сделать это с помощью JavaScript и CSS.

Вот мое решение (я имею в виду, способ сделать это).

Что вам нужно, это иметь новый <div> (или другой тег) с <iframe> внутри него некоторые функции JavaScript (они выполняются на стороне клиента, а не на стороне сервера) и некоторые CSS.

давайте покажем вам, как ваш display.php файл должен выглядеть так:

<form action="display.php" method="get" target="display" onSubmit="load();">
<input type="text" name="userInput">
<input type="submit">
</form>
<div id="mydiv" class="hide">
<iframe name="display"></iframe>
</div>

Обратите внимание, что я написал цель формы, равную имени iframe, поэтому он всегда будет отправляться в iframe. И, в форме это сделает вызов javascript при отправке. Кроме того, я добавил класс в новом div, чтобы скрыть содержимое с помощью CSS.
CSS будет выглядеть так:

body, html{ /*to fix the page css*/
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
#mydiv{ /*this is how it should work*/
position: fixed;
width: 100%;
height: 100%;
z-index: 1000; /*the position of the div relatively to other elements, to be always in front of them*/
background-color: rgba(0,0,0,0.3); /*this will add an artistic background effect when loading the submit*/
}
.hide{ /*this class hide the element*/
display: none;
}

И тогда ваш JavaScript:

function load()
{
var div = document.getElementById("mydiv");
div.className = "";
}
function finish() //this will be called later, don't forget to give it parameters
{
var div = document.getElementById("mydiv");
div.className = "hide";
//do what you need to show the final result here
}

сейчас у тебя send.php файл, я думаю, у вас там будет форма, так что вы делаете аналогичный вызов. это должно выглядеть так:

<form onSubmit="submitForm">
--your form contents--
</form>

и он должен иметь новую функцию JavaScript, например:

function submitForm()
{
parent.finish(); //this will call the iframe's parent function, don't forget to give it parameters and something to do.
return false; //this will stop the submit and the 'refresh page'
}

и тогда у вас есть свои вещи.
Я надеюсь, что это работает для вас.

0

Какие логические шаги мне нужно выполнить, чтобы иметь возможность открыть send.php в одном окне, display.php в другом

Попробуй это:

<form action="display.php" method="get" target="_blank" >
<input type="text" name="userInput">
<input type="submit">
</form>
-1
По вопросам рекламы [email protected]