这是一个很难描述的问题。
大图:一个 ajaxed 对话框提交到一个页面以创建一个新的内容集记录。创建内容集记录后,这个新创建的内容集应该是选中的内容集,所有创建或修改的内容都需要附加新创建的内容集id。内容集 ID 是在页面加载期间使用 MySQL 中的自动增量字段创建的。
问题详细信息:我有一个使用 ajax 拉出内容集创建对话框的页面。对话框提交到一个空白 URL,因为它可能从多个位置调用,我希望对话框提交到它被调用的任何 url。在对话框提交到调用它的页面后,页面上的一些 PHP 在 MySQL 数据库中创建一个内容集记录。我需要使用 GET 变量将新创建的记录的插入 ID 从页面传递到页面(最简单的方法,因为我已经通过这种方式传递了分页变量),但是由于必须在获取插入 ID 之前加载页面,所以我没有填充 GET 变量需要占据的所有位置的方式(在页面链接、php $_GET 变量、url 上)。
需要考虑的一些事项:
- 我将通过会话变量传递新创建的插入 ID,除非这会在有人点击后退按钮时导致问题,并且会话变量不会恢复到其先前的值。
- 我会使用 Javascript 和 PHP 来更改使用此插入 id 变量的各个位置,除非他们拉出另一个提交到空白 url 的 ajaxed 对话框,空白 url 当然不会有新的 GET 变量。此外,这似乎很草率,维护起来将是一场噩梦。
- 在创建记录后,我会在添加新的 GET 变量后重定向回同一页面,除非我无法传递 POST 变量,从而使错误和成功消息完全令人头疼。我不想使用 GET vars 告诉页面要显示什么错误/成功消息,因为 GET vars 使用 $_SERVER['QUERY_STRING'] 以及空白链接在页面之间传递。
- 我根本无法在创建后使新创建的内容集自动加载。这使用户需要自己加载新创建的内容集,这是我想避免的。
有什么优雅的解决方案吗?由于网站的设置方式,这个问题可能非常独特,但必须有人处理过类似的事情。我希望不必为了解决这个小问题而过多地改变网站设计。欢迎任何想法。