您好
我正在寻找关于如何在Web应用程序中的各个请求之间共享某些数据位(即提交后确认消息)的建议。让我解释一下:
目前的做法:
从形式上讲,表单及其确认页面是一组类。上面的页面是另一个。它们可以在技术上共享代码,但目前它们在处理单个请求时都是独立的。
我们想修改以上内容:
这将:
您建议使用哪种方法来共享两个请求之间的确认消息所需的数据?
我不确定它是否有帮助,它是一个由RESTful API支持的PHP应用程序,但我认为这是一个与语言无关的问题。
一些简单的解决方案是通过cookie或会话共享数据,但这会打破无状态,并且会对在多个选项卡中工作的用户造成严重问题(数据可能会发生冲突)。将数据作为GET参数传递是不合适的,因为我们正在谈论几个动态的消息(例如,更改演员,日期)。
谢谢,
微米。
答案 0 :(得分:2)
听起来需要用户消息系统的类型。我的意思是这个过程看起来类似于以下内容:
这样可以避免出现页面状态问题,同时仍然向用户提供要显示的消息,请注意您可能需要根据需要调整细节。
希望这有帮助。
答案 1 :(得分:1)
由于问题是以语言无关的方式呈现的,因此您可能对ASP.NET Server.Transfer
感兴趣,而confusedGeek described in his post完全符合您的要求。
然而对于PHP来说,情况似乎并不容易,而且我想到的所有解决方案都有设计气味:
<强>会话强>
使用会话使用特定标志标记数据,然后在概述页面上检查并使用它们。您不必确定在不再需要这些数据后总是取消设置这些数据,这可能很棘手。
<强>数据库强>
将这些数据作为{{3}}排入数据库,但我认为查询这样的每个请求都不是一个好主意。如果你的应用程序有点大,那么在数据库服务器上会有很多请求,这可能会减慢速度。
<强>卷曲强>
如果有机会,可以利用PHP中的cURL:
<?php
$curl = curl_init( );
curl_setopt( $curl, CURLOPT_URL, "http://localhost/something.php" );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $_POST );
curl_exec( $curl );
curl_close( $curl );
?>
<form action="test.php" method="post">
<input id="textfield" name="textfield" />
<input type="submit" />
</form>
这段代码在服务器端获取something.php
,允许向其发送POST数据并向您显示其内容(在此示例中可能只是print_r( $POST );
)。这个可以做你需要的,但它又有一个缺陷 - URL不会改变,所以用户可能会感到困惑 - 我不会真的推荐它。
我个人认为你的案子可能是一个设计缺陷。为什么要从表单页面获取所有资源并将其移动到其他页面?在为其设计的文件/类中使用您的数据并不容易,然后只决定您有什么结果?如果某些内容失败,它会在页面上返回带有表单的用户,如果一切顺利,您将数据发布到数据库并显示概述页面,其中包含一些快乐的消息,表明一切正常。
如果您真的想继续将所有内容发送到其他页面,那么使用AJAX / AJAJ可能是您的另一种解决方案。