将两个表单提交到同一页面

时间:2012-12-11 17:50:37

标签: php jquery ajax forms

我整天都在这个网站上,似乎找不到我需要的东西 - 没有重复的帖子。

我有一个包含链接的表单,该链接调用包含不同表单的模式弹出窗口。

###### PARENT PAGE #############
<form...>
...
<a href="php_page.php?id=<?php echo $id; ?>&sect=<?php echo $sect; ?>">link</a>
...
</form>

**** MODAL POPUP ****
<form...>
...
<input type="submit" />
</form>
**** END MODAL POPUP ****

### END PARENT PAGE #############

当我在模态弹出窗口中提交表单时,将刷新父页面以在页面的相应部分中显示更新的信息;除了没有提交第一个表单,当页面刷新以更新必要的部分时,第一个表单的内容将丢失。

我尝试使用ajax只刷新页面的必要部分,但这不能用作需要刷新的部分使用php变量和mysql内容。

系统做了它需要做的事情,我不介意刷新。但我需要一种方法来保持用户数据输入第一种形式。

是否可以将第一个表单与第二个表单同时提交到同一个php页面,或者在页面重新加载时以第一种形式保留用户数据的任何其他方式而不提交它。

2 个答案:

答案 0 :(得分:1)

你不能用纯php做到这一点。你需要javascript并以一种方式编写它,当你在模态上点击提交时,它会将信息“放回”到父表单中。

一种方法是使模态表单提交按钮不是实际的提交按钮。

你甚至可以将模态中填充的部分dom元素注入到父表单中。一些jquery插件已经这样做了。例如colorbox

Here is a working example仅使用一个<form>代码和jquery颜色框。 http://jsbin.com/olalam/1/edit

答案 1 :(得分:0)

我不是php开发人员,因此我建议采用另一种方法。

在刷新页面之前,您可以序列化表单并在本地存储数据(例如在cookie中),然后将数据恢复到表单中。当然,这将需要更多的JS代码,但应该得到你想要的。

更新:由于您提到在JS方面可能需要一些帮助,这里有一些指导:

  1. 抓取jquery.cookie插件here
  2. 抓取jquery.deserialize插件here
  3. 使用以下代码作为起点。
  4. // the name of the cookie
    var cookieName = 'myCookieName';
    
    function beforeSubmit() {
        // serialize the form into a variable
        var serializedForm = $('#id-of-form').serialize();
        // store the serialized form
        $.cookie(cookieName, serializedForm, { path: '/' });
    }
    
    function afterRefresh() {
        // read the cookie
        var serializedForm = $.cookie(cookieName);
        // de-serialize the form
        $('#id-of-form').deserialize(serializedForm, true);
    }
    

    HTH