我正在开发一个Web应用程序(J2EE),我想知道可以从浏览器处理双重帖子的选项.
我过去看过和使用过的解决方案都是客户端的:
如果可能的话,我更愿意实现服务器端解决方案.有没有比我上面提到的更好的方法,或者客户端解决方案最好?
我有以下索引视图:
@model BoringStore.ViewModels.ProductIndexViewModel
@{
ViewBag.Title = "Index";
}
<h2>Produkte</h2>
<div id='addProduct'>
@{ Html.RenderPartial("Create", new BoringStore.Models.Product()); }
</div>
<div id='productList'>
@{ Html.RenderPartial("ProductListControl", Model.Products); }
</div>
Run Code Online (Sandbox Code Playgroud)
"productList"只是所有产品的列表.
addProduct呈现我的创建视图:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<div id="dialog-confirm" title="Produkt hinzufügen" style="display:none">
@using (Ajax.BeginForm("Index_AddItem", new AjaxOptions { UpdateTargetId = "productList" }))
{
@Html.Raw(DateTime.Now.ToString());
<div>
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
</div>
<br />
<div>
@Html.LabelFor(model => model.Price)
@Html.EditorFor(model => model.Price)
</div>
<br /><br />
<div>
<input type="submit" value="Produkt hinzufügen" />
</div>
}
Run Code Online (Sandbox Code Playgroud)
提交表单时,将调用控制器中的Index_AddItem方法.不幸的是,表单总是调用该方法两次.:(
有人可以帮我吗?
asp.net-ajax partial-views razor asp.net-mvc-3 double-submit-problem
我只是想知道是否有人对我所处的情况有一些信息或反馈.目前我正面临"双表提交"问题,我点击"提交"按钮一次,然后提交表格两次.这只发生在IE9中,但我只针对Safari,Chrome(最新),FF(Ver 5/6),IE8和IE9进行了测试.
这是代码:
<!DOCTYPE html>
<html lang="en-us" dir="ltr">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>IE9 test</title>
</head>
<body>
<h1>Testing</h1>
<form method="POST" id="submit_form">
<input type="text" name="x" value="xxxx" />
<input type="text" name="y" value="yyyy" />
<button type="submit" class="btn_sign_in" id="btn_logon" onclick="this.disabled=true;document.forms[0].submit();">Submit</button>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有问题的部分是:
onclick="this.disabled=true;document.forms[0].submit();"
Run Code Online (Sandbox Code Playgroud)
代码已经在我的网站上存在了很长时间,这是我第一次遇到双提交问题,因为IE9今年才发布,可能这些天越来越多人使用IE9,因此我收到用户对这个问题的抱怨.
最难的部分是双重提交问题并不总是可重现的.有时会提交双倍,有时会提交一次.
我目前的工作是改变:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
Run Code Online (Sandbox Code Playgroud)
并改为:
<meta http-equiv="X-UA-Compatible" content="IE=8" >
Run Code Online (Sandbox Code Playgroud)
这迫使IE9使用IE8兼容性,它将正确执行Javascript以进行提交.
我已经打电话给微软支持,他们声称这是一个"Javascript兼容性问题",所以我们需要微调我们的Javascript以使我们的网站在IE9下正常工作..(Duh!)
无论如何,是我的代码:
onclick="this.disabled=true;document.forms[0].submit();"
Run Code Online (Sandbox Code Playgroud)
开始已经错了?因为即使其他浏览器没有抱怨,但可能这是不正确的开始?
我希望如果有人也面临类似问题,可以获得更多信息或反馈.目前,如果我不将X-UA-Compatible更改为IE = 8,我可以将我的代码更改为:
onclick="this.disabled=true;"
Run Code Online (Sandbox Code Playgroud)
这也将解决双重提交问题,但是还有一个我们应该注意的IE9兼容性问题列表吗?
谢谢!
好吧,一切都在标题中,但我会解释一下:-)
我的rails应用程序包含许多表单(Ajaxified或不Ajaxified).
为了防止用户提交两次或更多的表格,我使用Javascript.
有一个Ajaxified表单的场景:
现在我想添加服务器端代码,以便在用户绕过javascript时保持真正干净.
有什么建议?
javascript forms controller ruby-on-rails double-submit-problem
因为某种原因,我的表单只需按一下按钮即可提交两次.这是我第一次使用jquery Form插件,我想jquery提交一次,表单也"自然"提交.我已经看到,补救措施是将"return false"附加到表单的onSubmit事件处理程序.我以为我在做那件事,但显然它不起作用.
有人可以帮忙吗?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>User form entry </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="jquery.validate.js"></script>
<script src="jquery.passwordStrength.js"></script>
<script src="jquery.form.js"></script>
<script>
$(document).ready(function() {
$('#signupForm').ajaxForm(function() {
var queryString = $('#signupForm').formSerialize();
$.post('process.php', queryString);
});
});
</script>
</head>
<body>
<form id="signupForm" action="process.php" onsubmit="return false" method="post">
<fieldset class="password">
... form goes here
<button type="submit" name="formSubmit" value="submit">Click to submit</button>
</form>
<div id="results"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我已经尝试将onsubmit ="return false"添加到表单元素,但之后我根本没有提交.我也尝试过添加"return false".到jQuery,但后来我还有两次提交.我错过了什么?这似乎是根据jQuery Form Plugin网站的标准方法..我的表单有何不同?
(顺便说一下,只是为了清楚..我不是在谈论通过反复按下按钮连续多次提交多个表格的问题.我的问题是"一个提交按钮推送=两个提交".)
我正在寻求执行一个基本的表单帖子,但是以下内容在Chrome和Safari中提交给服务器两次(但在Firefox中表现如预期):
<form id="create-deck-form" action="/decks/create" method="post">
<fieldset>
<legend>Create new deck</legend>
<label for="deck-name-field">Name</label>
<input id="deck-name-field" name="deck-name-field" type="text" value="" maxlength="140" />
<label for="tag-field">Tags</label>
<input id="tag-field" name="tag-field" type="text" value="" maxlength="140" />
<input class="add-button" type="submit" value="Create" />
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)
我想onsubmit
在提交之前使用该属性对字段执行验证,但无论返回值是什么true
,表单都会提交两次.
我试图将jQuery处理程序绑定到表单,但是在这里也没有阻止默认行为,表单被提交两次,例如:
<script type="text/javascript">
$(document).ready(function() {
$("#create-deck-form").submit(function(event){
if($("#deck-name-field").val() == "") {
event.preventDefault();
alert("deck name required");
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
虽然我认为这对于一双新鲜的眼睛有一些令人眼花缭乱的明显错误,但我深感困惑的是,为什么提交(无论有无验证)都会在Chrome和Safari中向服务器发送重复的帖子.任何见解都会让我感激不尽.
我在IE中有这个问题,有时我的表单提交两次.我知道点击按钮两次的问题,这不是问题.但就我而言,我只点击一次.我检查了数据库中的记录,有两条记录.
<input type="button" value="Approve" name="btn_approve" id="btn_approve">
<input type="button" value="Reject" name="btn_reject" id="btn_reject">
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.20.custom.min.js"></script>
<script>
$(document).ready(function () {
$("#btn_approve").click(function () {
// some validation before submitting the form
$("#my_form").submit();
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery在MVC应用程序中提交表单.我在控制器内部有一个断点,我看到它被击中了两次.我究竟做错了什么?
这是我的jQuery
(function ($) {
$(document).ready(function () {
$(':radio').change(function () {
$('#frmMDR').submit();
});
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
这是表格html
<form action="/Module/ModuleIndex" id="frmMDR" method="get">
<input id="rdoMaintenance" name="module" type="radio" value="Maintenance" /><label for="rdoMaintenance">M</label>
<input id="rdoDiagnostics" name="module" type="radio" value="Diagnostics" /><label for="rdoDiagnostics">D</label>
<input id="rdoRepair" name="module" type="radio" value="Repair" /><label for="rdoRepair">R</label>
<input id="hdnVehicle" name="hdnVehicle" type="hidden" value="" />
</form>
Run Code Online (Sandbox Code Playgroud)
我猜我不应该使用change事件.如果有人知道如何解决问题,我很乐意听到任何想法.非常感谢任何提示.
干杯,
〜在圣地亚哥
我的jQuery submit()
事件发射两次,我不知道为什么.
我正在使用模板引擎动态构建我的HTML,所以我最终$(document).ready()
多次调用,如下所示......
<script>
$(document).ready(function() {
$("form.search input[type='image']").click(function() { $(this).closest('form.search').submit() })
})
</script>
Run Code Online (Sandbox Code Playgroud)
...后来...
</script>
$(document).ready(function() {
# I have put an `unbind('submit')` in here to be sure I have nothing else but this particular function bound to `submit`
$('form.search').unbind('submit').bind('submit',function(event) {
event.stopPropagation();
search_term = $(this).find('input[type=text]').val()
$new_keyword = $('<li class="filter keyword selected" name="'+search_term+'">'+search_term+'</li>')
alert('event fired!')
$("#keywords ul").append($new_keyword)
do_search_selected()
return false; // Stop the form from actually submitting
})
})
</script>
Run Code Online (Sandbox Code Playgroud)
表格HTML:
<form class="search" method="get" action="/search/">
<div>
<input id="searchfield"type="text" …
Run Code Online (Sandbox Code Playgroud) 我有一个与此类似的jQuery/HTML代码:
<form action="/SomeAction" method="post">
<input id="my-textbox" type="text" placeholder="Write something and press enter to continue..." />
</form>
<script type="text/javascript">
$(function() {
$('#my-textbox').keyup(function(e) {
var $textbox = $(this);
if ($textbox.val().length > 0 && e.keyCode == 13) {
$textbox.parent('form').submit();
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
目的是在用户按下"Enter"键时自动提交表单.我经常使用Firefox,所以在我使用谷歌浏览器和Internet Explorer进行测试之前,一切都还可以.
当我在后面的浏览器中按下Enter键时,有时我会提交两次表单.这很容易被注意到,因为我会在我的数据库中获得重复的条目,并且我会看到两个POST
使用Fiddler.
经过一些测试,我发现我的问题是jQuery代码,因为文本框会在没有它的情况下自动提交,并且POST
在某些浏览器中使用此代码会产生第二个代码.
我的问题是:
为什么浏览器不能巧妙地阻止第二个表单发布(就像Firefox在我的测试中所做的那样)?
我是否应该在所有平台的所有主流浏览器中都期待此行为?
有没有办法改进这个代码所以我使用JavaScript执行提交,但是没有提交两次提交的表单?
javascript forms jquery javascript-events double-submit-problem
我有一个处理付款的表单,但大约每 300 次付款中就有一次出现两次,我的日志显示所有这些事件都有两次请求。
我实现了一些在单击后禁用提交按钮的 JavaScript,它似乎对我来说工作正常,但我仍然时不时地收到双重提交。
有谁知道还有什么可能导致表单提交两次?
$("#classesLink").click(function(event) {
$("#globalUserContent").children().slideUp("normal", function() {
$.ajax({
type: "POST",
url: "classes.php?token="+randString+"",
success: function (msg) {
$("#globalUserContent").html(msg);
},
error: function (msg) {
$("#globalUserContent").html(msg);
}
});
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
我有上面的代码,当我点击.classesLink
按钮并检查firebug请求时,它显示它被提交两次,它有什么问题吗?
我有一个弹出窗口,其中有两个onclick方法,如"Submit"和"Discard".
当我单击提交两次时,它会插入两条记录,这意味着重复记录.
我怎么能避免这个?
java ajax struts2 double-submit-prevention double-submit-problem
jquery ×7
forms ×6
javascript ×5
html ×3
ajax ×2
php ×2
asp.net-ajax ×1
controller ×1
dom ×1
facebox ×1
http ×1
java ×1
java-ee ×1
radio-button ×1
razor ×1
struts2 ×1