Я прихожу сюда с очень небольшим знанием веб-разработки, пытаясь учиться, поэтому я прошу немного терпения в отношении моего невежества по этому вопросу.
Было бы здорово, если бы вы могли показать мне логические шаги, которые мне нужно выполнить, чтобы выполнить задачу передо мной.
Работа с 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 🙂
Поэтому, после более глубокого анализа вашей OP (Original Post), я считаю, что для вас будет работать следующее:
В send.php
: используйте Ajax для сохранения каждого отсканированного штрих-кода в базе данных. Это объясняется тем, что вы не перенаправляете в другое место. AJAX просто ищет php-файл, который выполняет всю работу по сохранению (которую вы можете назвать process.php).
В display.php
: извлечь все штрих-коды из базы данных и отобразить их. Это можно сделать прямо с помощью встроенного PHP или, если вы хотите делать это много раз, используйте AJAX.
С этой структурой вы можете видеть все сохраненные штрих-коды независимо от того, в каком окне или устройстве вы находитесь.
Вы могли бы использовать веб-сокеты и сервер, который поддерживает это как 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
Посмотрим, получу ли я тебя.
Что вы хотите, чтобы, когда пользователь нажимает на кнопку «Отправить», он открывает на той же странице, 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'
}
и тогда у вас есть свои вещи.
Я надеюсь, что это работает для вас.
Какие логические шаги мне нужно выполнить, чтобы иметь возможность открыть send.php в одном окне, display.php в другом
Попробуй это:
<form action="display.php" method="get" target="_blank" >
<input type="text" name="userInput">
<input type="submit">
</form>