PHP从一个页面处理http请求并在另一个页面上显示它

时间:2015-03-31 14:03:46

标签: javascript php ajax inventory

我来到这里时,对于尝试学习的网络开发知之甚少,所以我要求对我对这个问题的无知感到一些耐心。

如果您能向我展示我需要在我之前完成任务所需的逻辑步骤,那将会很棒。

在这里使用PHP。我需要弄清楚如何从一个页面/ Web应用程序和进程发送GET请求,并将其显示在另一个页面/ Web应用程序和进程中。

一个简单的例子:

有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,在表单中键入内容,按提交并在display.php窗口中查看结果而不是通常从send.php重定向到display.php?据我所知,AJAX允许我们与服务器通信,但结果仍然返回到同一页面。原谅我的无知,我寻求解决方案的逻辑步骤,也许是我目前没有意识到的某些技术或方法,需要研究并找到完成此任务的方法。

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

注意:我们被明确告知不要使用java / scala,因为sys-admin不希望jvm在与库存系统相同的服务器上运行(看起来只有一个专用的服务器),我假设node.js也是虽然我不确定,但他们陷入了同一条船。

感谢您耐心处理完整的Web开发菜单:)

4 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:0)

让我们看看我是否有你。

您想要的是,当用户点击提交时,他会在同一页面打开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'
}

然后,你有你的东西。 我希望它适用于你。

答案 2 :(得分:0)

因此,在更深入地分析您的OP(原始帖子)后,我相信对您有用的是:

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

display.php中:从数据库中检索所有条形码并进行渲染。这可以通过嵌入式PHP直接完成,或者你想要多次这样做,使用AJAX。

使用此结构,您可以看到保存的所有条形码,无论您使用的是哪个窗口或设备。

答案 3 :(得分:-1)

  

我需要执行哪些逻辑步骤才能在一个窗口中打开send.php,在另一个窗口中打开display.php

试试这个:

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