PHP 处理来自一个页面的http请求并在另一个页面上显示

PHP process http request from one page and display it on another

我来这里时对 web 开发的了解很少,因此我对这方面的无知请大家耐心等待。

如果你能告诉我完成面前的任务需要执行的逻辑步骤,那就太好了。

在此处与 PHP 合作。我需要弄清楚如何从一个 page/web 应用程序发送 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 接收字符串并将其用作某些函数的参数并回显它。

我需要执行哪些逻辑步骤才能在一个 window 中打开 send.php,在另一个中打开 display.php,在表单中输入内容,按提交并查看display.php window 中的结果而不是通常从 send.php 重定向到 display.php?据我所知, AJAX 允许我们与服务器通信,但结果仍然返回到同一页面。原谅我的无知,我寻求解决方案的逻辑步骤,也许是我目前不知道的某些技术或方法,需要研究并找到完成此任务的方法。

实际任务是使用库存管理系统:我们需要能够用一台设备扫描 barcodes/id 等,同时在另一个屏幕上查看有关物品的信息(想想:用一个扫描条形码android 应用程序,将其发送到基于 Web 的库存系统,该系统在平板电脑或类似设备上打开,并在所述平板电脑上查看有关该项目的信息。

注意:我们被明确告知不要使用 java/scala,因为系统管理员不希望在与库存系统相同的服务器上安装 jvm 运行(显然只有一台服务器专用于此), 我假设 node.js 也属于同一条船,尽管我不确定。

感谢您耐心地处理一个完整的网络开发新手:)

What logical steps do I need to perform to be able to open send.php in one window, display.php in another

试试这个:

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

您可以使用 websockets,以及像 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 文件而不重定向,添加新信息,然后 return 到 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 处添加了一个 class 以隐藏带有 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'
}

然后,你就有了你的东西。 我希望它对你有用。

所以在更深入地分析了您的 OP(Original Post) 之后,我相信以下内容对您有用:

send.php中:使用Ajax将每个扫描的条码存储到数据库中。这样做的原因是您不会重定向到其他地方。 AJAX 将只查找完成所有存储工作的 php 文件(您可以调用 process.php)。

In display.php: 从数据库中检索所有的条形码并渲染它。这可以通过嵌入式 PHP 直接完成,或者如果您想每隔这么多次执行一次,请使用 AJAX.

使用此结构,无论您使用什么 window 或使用什么设备,您都可以看到所有保存的条形码。