Maison > interface Web > tutoriel HTML > 提交到当前页面,如何解决刷新重复提交表单的问题?_html/css_WEB-ITnose

提交到当前页面,如何解决刷新重复提交表单的问题?_html/css_WEB-ITnose

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2016-06-24 12:25:40
original
1823 Les gens l'ont consulté

本帖最后由 lljl2009 于 2013-12-09 19:59:49 编辑

完全新手,请教大家!
要求是:
1. 页面中有一个form,两个按钮,一个是save,一个是cancel;form中的数据是从文件a中读取的;
2. form中的内容修改后,点save后保存数据到文件a中,仍然显示当前的页面;点cancel就取消更改;
3. 问题是当点刷新会重复提交表单,我是用cgi实现的,写了简单的代码如下:
show.html:
#include 
#include "cgic.h"
#include 
#include 

char text_value[]={"AAAAAAAA"}; // text_value is from a file
void htmlPage()
{
fprintf(cgiOut, "\n");
fprintf(cgiOut, "Test Form\n");

fprintf(cgiOut, " \n");

fprintf(cgiOut, "
\n");

fprintf(cgiOut, "\n",text_value);

fprintf(cgiOut, "\n");
fprintf(cgiOut, "\n");
fprintf(cgiOut, "
\n");

fprintf(cgiOut, "\n");
fprintf(cgiOut, "\n");
}

show_data.c:
#include 
#include "cgic.h"
#include 
#include 
#include 
#include "mypage.h"


int cgiMain()
{
if (cgiFormSubmitClicked("save") == cgiFormSuccess)
{
// save data to a file;
// ...
// reload page;
cgiHeaderContentType("text/html");
htmlPage();
return 0;
}
//read data from a file
// ...
cgiHeaderContentType("text/html");
htmlPage();
return 0;
}


4. 我实验了网上的几种方法:javascript中使用全局变量和使用一个隐藏的控件都不行,因为我的页面重新load后这个值总是初始值;使用隐藏的iframe,然后form的target指向这个frame,也不行,这样点了save后仍然可以执行cancel;不能在提交后将save控件disable,因为我在cgiMain中还要做一些保存数据等处理,disable后都没有执行这一块了。。。

我不明白其它的session,ajax等方法是怎么用的,能不能达到目的? 能否指点一下 该怎么做阿?没有头绪。。。

多谢拉!

回复讨论(解决方案)

页面后面生成一个随机的时间戳
后台提取前 session比对一下
如:
http://www.baidu.com?p=12345678912
服务器端  取 

if( isset( $_GET["p"] ) && $_GET["p"] != session["submit"] ){    // do sth.    // session["submit"] = $_GET["p"];};
Copier après la connexion
Copier après la connexion

页面后面生成一个随机的时间戳
后台提取前 session比对一下
如:
http://www.baidu.com?p=12345678912
服务器端 取

if( isset( $_GET["p"] ) && $_GET["p"] != session["submit"] ){    // do sth.    // session["submit"] = $_GET["p"];};
Copier après la connexion
Copier après la connexion


谢谢回复!页面后面 是指什么时候? 我应该在这个代码的什么部分去做? 还有这个Php代码我可以直接应用到我的代码中吗?

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal