ajax提交一次之后不能再次提交

问题描述

ajax提交一次之后再次点击检索的时候alert("jinrusubmit");没有被执行新手不理解为什么会这样请高手解答!!$("#doSelect").click(function(){$("#examineeForm").attr("action","/Sample0203/DoSelect");$('#examineeForm').submit(function(){alert("jinrusubmit");if($(this).valid()){varrequest=newSample0203Form();$.ajax({type:"POST",url:'@Url.Action("DoSelect","Sample0203")',dataType:'json',data:JSON.stringify(request),contentType:'application/json',updateTargetId:'divTab1',success:function(data){alert("success:"+data.StrField1);}});}returnfalse;});alert("jinru");$('#examineeForm').submit();});

解决方案

解决方案二:
$.ajax中添加cache:false以防止缓存请求。
解决方案三:
引用1楼qwertxp的回复:

$.ajax中添加cache:false以防止缓存请求。

貌似没有起到作用呀!!感觉解决问题的方向不对!
解决方案四:
缓存了哈,在请求的url后加个随机数吧/Sample0203/DoSelect?a=Math.random()
解决方案五:
引用3楼xiaolll028的回复:

缓存了哈,在请求的url后加个随机数吧/Sample0203/DoSelect?a=Math.random()

不是太懂为什么要加?a=Math.random()???自我感觉解决问题的方向不对!view的代码@modelMvcApplication.Models.Sample0203.Sample0203Form@using(Html.BeginForm("Sample0203","",FormMethod.Post,new{id="examineeForm"})){<tablewidth="960"border="0"cellspacing="0"cellpadding="0"class="alltab"><tr><tdvalign="top"><divclass="bbtab"id="search_condition"><tableborder="0"cellspacing="5"cellpadding="0"><tr><tdcolspan="2"style="font-weight:bold;">■条件設定</td></tr><tr><td><labelclass="label130">店舗コード</label></td><tdcolspan="4"><inputtype="text"name="StrField1"id="StrField1"style="width:100px;height:24px;"maxlength="4"/></td></tr><tr><td><labelclass="label130">コード範囲</label></td><tdcolspan="4"><span><inputtype="text"name="StrField2"id="StrField2"style="width:100px;height:24px;"maxlength="4"/>&nbsp;~&nbsp;<inputtype="text"name="StrField3"id="StrField3"style="width:100px;height:24px;"maxlength="4"/></span></td></tr><tr><td><labelclass="label130">メニュー名称</label></td><tdcolspan="4"><inputtype="text"name="StrField4"id="StrField4"style="width:300px;height:20px;"maxlength="40"/></td></tr><tr><td><labelclass="label130">売価範囲</label></td><tdstyle="width:494px"><span><inputtype="text"name="StrField5"id="StrField5"style="width:100px;height:20px;"maxlength="7"/>&nbsp;~&nbsp;<inputtype="text"name="StrField6"id="StrField6"style="width:100px;height:20px;"maxlength="7"/></span></td><td><span><inputclass="btn130"value="条件クリア"onclick="doClear()"/><inputclass="btn130"value="検  索"id="doSelect"/></span></td></tr></table></div></td></tr><tr><tdcolspan="2"align="left"valign="top"><divclass="bbtab"id="tableArea"><tablewidth="100%"border="0"cellspacing="5"cellpadding="0"><tr><tdstyle="font-weight:bold;">■検索結果</td></tr><tr><tdcolspan="3"><tablewidth="930"border="0"cellspacing="0"cellpadding="0"class="l_table"><trstyle="background:url(Images/tit23.gif)repeat-x;"align="center"><tdwidth="80">コ一ド</td><td>メニュー名称</td><td>売価</td><td>点数</td><td>金額</td></tr>@if(Model.Commodity.Count>0){for(inti=0;i<Model.Commodity.Count;i++){if((i%2)==0){<trstyle="background:#dfecfa;"><td>@Html.DisplayFor(item=>Model.Commodity[i].Code)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Name)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Price)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Point)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Amount)</td></tr>}else{<trstyle="background:#fff;"><td>@Html.DisplayFor(item=>Model.Commodity[i].Code)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Name)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Price)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Point)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].AmountDisPlay)</td></tr>}}}</table></td></tr><tr><td><inputclass="btn130"value="全 選 択"/></td><td><inputclass="btn130"value="選択解除"/></td><td><spanstyle="padding-left:283px"><label>小計</label>@*<inputtype="text"name="textfield7"id="textfield7"value='model.StrField7'style="width:150px;height:24px;"/>*@@Html.TextBoxFor(model=>model.StrField7,new{style="width:150px;height:24px;"})@*<inputtype="text"name="textfield8"id="textfield8"style="width:181px;height:24px;"/>*@@Html.TextBoxFor(model=>model.StrField8,new{style="width:150px;height:24px;"})</span></td></tr></table></div></td></tr></table>}Controllers的代码[HttpPost]publicActionResultDoSelect(Sample0203Formsample0203From){boolisAjax=Request.IsAjaxRequest();//Sample0203Formsample0203From=newSample0203Form();sample0203From.Commodity=newList<CommodityModel>();CreateCommodityModelList(sample0203From.Commodity);longpointSum=0;longamountSum=0;foreach(CommodityModeliteminsample0203From.Commodity){pointSum+=Convert.ToInt32(item.Point);amountSum+=Convert.ToInt32(item.Amount);}sample0203From.StrField7=Convert.ToString(pointSum);sample0203From.StrField8=amountSum.ToString("#,
解决方案六:
");returnView("Sample0203",sample0203From);//returnJson(sample0203From,JsonRequestBehavior.AllowGet);}虽然使用ajax来提交但是表单中的数据是sample0203From.Commodity来显示不知道这种做法对不对我的本意是当输入检索条件后点击检索条件能保留下来(所以使用ajax提交)同时表单中的数据表示出来(但是实际执行的时候感觉页面全部刷新了输入检索条件也没有保留下来)求高手解惑!!
解决方案七:
……你的问题表达的就不对你要做局部刷新是吧?那你这种方式就不对啊。你action中返回josn或者字符串。然后ajax中获取到字符串,再对页面的对象操作就好了
解决方案八:
引用5楼xiaolll028的回复:

……你的问题表达的就不对你要做局部刷新是吧?那你这种方式就不对啊。你action中返回josn或者字符串。然后ajax中获取到字符串,再对页面的对象操作就好了

谢谢高手提供解决意见!想法的确是想要这样的结果局部刷新保留输入的检索条件感觉应该是这个原因!按照高手提供的意见下面的这部分html代码就需要用js来写简单的还以但是像这样处理类似datagird的处理感觉太复杂了呜呜不会呀!!!@if(Model.Commodity.Count>0){for(inti=0;i<Model.Commodity.Count;i++){if((i%2)==0){<trstyle="background:#dfecfa;"><td>@Html.DisplayFor(item=>Model.Commodity[i].Code)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Name)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Price)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Point)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Amount)</td></tr>}else{<trstyle="background:#fff;"><td>@Html.DisplayFor(item=>Model.Commodity[i].Code)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Name)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Price)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Point)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].AmountDisPlay)</td></tr>}}}所以请教高手大侠们对于处理类似这样画面提供一个好的解决方法嘿嘿要是有完整的例子就完美了!!
解决方案九:
把这个换成js操作一样的啊假如返回的json对象{Commodity:[{Code:'1',Name:'0'},{Code:'6101',Name:'西安市'},{Code:'6102',Name:'铜川市'},]}for(vari=0;i<results.Commodity.length;i++){就是拼接html字符串}完了后就是在相应的table后面加个这个节点@if(Model.Commodity.Count>0){for(inti=0;i<Model.Commodity.Count;i++){if((i%2)==0){<trstyle="background:#dfecfa;"><td>@Html.DisplayFor(item=>Model.Commodity[i].Code)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Name)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Price)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Point)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Amount)</td></tr>}else{<trstyle="background:#fff;"><td>@Html.DisplayFor(item=>Model.Commodity[i].Code)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Name)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Price)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].Point)</td><td>@Html.DisplayFor(item=>Model.Commodity[i].AmountDisPlay)</td></tr>}}}
解决方案十:
引用6楼zhr19811013的回复:

Quote: 引用5楼xiaolll028的回复:
……你的问题表达的就不对你要做局部刷新是吧?那你这种方式就不对啊。你action中返回josn或者字符串。然后ajax中获取到字符串,再对页面的对象操作就好了

谢谢高手提供解决意见!想法的确是想要这样的结果局部刷新保留输入的检索条件感觉应该是这个原因!按照高手提供的意见下面的这部分html代码就需要用js来写简单的还以但是像这样处理类似datagird的处理感觉太复杂了呜呜不会呀!!!

如果你要使用ajax来处理UI展示刷新,那么你的可见的组件就应该使用基于javascript的Grid插件。使用asp.netwebform或者asp.netmvc都是坑爹的,因为它们都是只能支持那种“服务器端一遍遍下载html”的编程方式,不支持ajax来渲染UI的。在前端开发方面,你不应该学习asp.net(用它作点ashx支持ajax数据访问服务即可),而是应该学会使用任何一种基于js的Grid组件。
解决方案十一:
轻量级的ajax方法,不是执行form.submit,所以你的折部分代码应该删除掉。你可以使用ajax方式去下载某个页面的局部的html,在服务器端定义所谓局部视图或者用户控件用于获取html。这在你这个没有经过美工设计、异常简单的页面中是可以方便处理的。你可以搜索一下关于局部刷新html的文章。不过我建议你学会一、两种前端UI框架中的Grid,而不是在服务器端生成这种东西。
解决方案十二:
引用6楼zhr19811013的回复:

所以请教高手大侠们对于处理类似这样画面提供一个好的解决方法嘿嘿要是有完整的例子就完美了!!

为什么要学会前端UI框架的编程开发,而放弃asp.net这类方式呢?拿你这个过于简单的例子来看,假设在下面的Grid中需要编辑,编辑过程中需要局部刷新Grid,那么编辑的状态怎么维持?再比如说tree上的节点被点击、状态改变,这时候要刷新tree,这些状态如何维持?再比如说稍微复杂页面有很多局部刷新的部分,每一部分的id等等如何协调?这些都应该从前端编程上统一设计,进行轻量级的UI编程。而使用“局部刷新html”的方式的程序员只会“丢弃”这些UI交互设计细节,否则就搞不定了。所以如果想大量使用ajax编程,那么我们就相信首先要求程序员“刷新局部内容时不在asp.net端输出html,仅需要输出数据”。因此asp.netwebform和asp.netmvc的UI处理框架都无用。
解决方案十三:
引用10楼sp1234的回复:

Quote: 引用6楼zhr19811013的回复:
所以请教高手大侠们对于处理类似这样画面提供一个好的解决方法嘿嘿要是有完整的例子就完美了!!

为什么要学会前端UI框架的编程开发,而放弃asp.net这类方式呢?拿你这个过于简单的例子来看,假设在下面的Grid中需要编辑,编辑过程中需要局部刷新Grid,那么编辑的状态怎么维持?再比如说tree上的节点被点击、状态改变,这时候要刷新tree,这些状态如何维持?再比如说稍微复杂页面有很多局部刷新的部分,每一部分的id等等如何协调?这些都应该从前端编程上统一设计,进行轻量级的UI编程。而使用“局部刷新html”的方式的程序员只会“丢弃”这些UI交互设计细节,否则就搞不定了。所以如果想大量使用ajax编程,那么我们就相信首先要求程序员“刷新局部内容时不在asp.net端输出html,仅需要输出数据”。因此asp.netwebform和asp.netmvc的UI处理框架都无用。

恩谢谢!!大侠高手的指点!结合我提出的问题总结一下使用ajax来提交但是表单中的数据是sample0203From.Commodity来显示这种做法本身就是错误的我应该使用javascript的Grid插件通过Controllers来返回json数据进而给javascript的Grid赋值我会试着使用第三方Grid控件来实现我想要的需求回到我最初提出的问题ajax提交一次之后可以出数据但是再次点击检索的时候alert("jinrusubmit");没有被执行我还是想知道原因请高手解答!!
解决方案十四:
你看看你的提交按钮是不是submit
解决方案十五:
引用8楼sp1234的回复:

Quote: 引用6楼zhr19811013的回复:
Quote: 引用5楼xiaolll028的回复:
……你的问题表达的就不对你要做局部刷新是吧?那你这种方式就不对啊。你action中返回josn或者字符串。然后ajax中获取到字符串,再对页面的对象操作就好了

谢谢高手提供解决意见!想法的确是想要这样的结果局部刷新保留输入的检索条件感觉应该是这个原因!按照高手提供的意见下面的这部分html代码就需要用js来写简单的还以但是像这样处理类似datagird的处理感觉太复杂了呜呜不会呀!!!

如果你要使用ajax来处理UI展示刷新,那么你的可见的组件就应该使用基于javascript的Grid插件。使用asp.netwebform或者asp.netmvc都是坑爹的,因为它们都是只能支持那种“服务器端一遍遍下载html”的编程方式,不支持ajax来渲染UI的。在前端开发方面,你不应该学习asp.net(用它作点ashx支持ajax数据访问服务即可),而是应该学会使用任何一种基于js的Grid组件。

看过N个帖子了,@sp1234这家一直说一些高大尚的东西。从来没解决过实际问题,这是在受之以渔?
解决方案:
$('#examineeForm').submit();是不是这行代码覆盖掉了上面代码内的function,所以没有反应???你给这行代码的submit重新写个function,然后alert另外一个内容试试
解决方案:
引用12楼stormem的回复:

你看看你的提交按钮是不是submit

提交按钮不是submit
解决方案:
引用14楼wrqlgd的回复:

$('#examineeForm').submit();是不是这行代码覆盖掉了上面代码内的function,所以没有反应???你给这行代码的submit重新写个function,然后alert另外一个内容试试

如果不加这句话提交不到后台!!按照网上提供的资料returnfalse;是不会提交到后台的实际执行时也没有提交到后台因此$('#examineeForm').submit();是必须的
解决方案:
引用16楼zhr19811013的回复:

Quote: 引用14楼wrqlgd的回复:
$('#examineeForm').submit();是不是这行代码覆盖掉了上面代码内的function,所以没有反应???你给这行代码的submit重新写个function,然后alert另外一个内容试试

如果不加这句话提交不到后台!!按照网上提供的资料returnfalse;是不会提交到后台的实际执行时也没有提交到后台因此$('#examineeForm').submit();是必须的

jquery不太熟悉,不过我感觉$('#examineeForm').submit(function(){});这里已经执行了submit了~~~~~

时间: 2024-10-28 08:37:26

ajax提交一次之后不能再次提交的相关文章

ajax-表单提交出现(若要再次显示该网页,WEB浏览器需要重新发送您以前的提交信息)

问题描述 表单提交出现(若要再次显示该网页,WEB浏览器需要重新发送您以前的提交信息) 求各位想想解决办法 解决方案 请贴出你确认按钮的代码, 解决方案二: 你点击按钮的时候 页面已经发生了一次提交吧,再次刷新的时候就是再提交,所以可以采用 javascript 来完成 确认按钮的动作.

AJAX PHP无刷新form表单提交的简单实现(推荐)_php实例

ajax.php: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <script language="javascript"> function saveUserInfo() { //获取

基于Ajax技术实现考试倒计时并自动提交试卷_AJAX相关

1.概述 在开发网络考试系统时,考试计时并自动提交试卷是必不可少的功能.由于在答卷过程中,试卷不能刷新,所以需要使用Ajax实现无刷新操作.运行本实例,访问准备考试页面index.jsp,在该页面中,单击"开始考试"按钮,将打开新窗口显示开始考试的页面,如图10.1所示,页面会自动计时,当考试时间结束时,将自动提价试卷. 2.技术要点 主要是利用Ajax异步提交技术和Servlet技术实现的.显示在考试页面中的计时时间是在Servlet中设置的,需要通过Ajax的异步提交不断的请求Se

使用Ajax方法实现Form表单的提交及注意事项

写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说想要将控制权放在前端,通过js来操作页面的跳转或者数据变化. 一般这种异步的操作,我们都会想到ajax方式,因此在实现了功能后就整理了这篇文章,通过ajax方法实现form表单的提交并进行后续的异步操作. 常见的form表单提交方式 <!DOCTYPE HTML PUBLIC "-//W3C/

ajax快速解决参数过长无法提交成功的问题_AJAX相关

查了很多资料都说,get方法的参数是有限制的,post方法的参数的长度是无限制,这也是post相比get的优势一直. 在ajax中使用post方法,用常规的参数格式:param1=a1&param2=a2 ,当参数长度过长时,依然提交不成功.比如我们经常这样写一个ajax的post请求: $.ajax({ type: "post", // post or get contentType:"application/json;charset=utf-8", da

ajax快速解决参数过长无法提交成功的问题

查了很多资料都说,get方法的参数是有限制的,post方法的参数的长度是无限制,这也是post相比get的优势一直. 在ajax中使用post方法,用常规的参数格式:param1=a1&param2=a2 ,当参数长度过长时,依然提交不成功.比如我们经常这样写一个ajax的post请求: $.ajax({ type: "post", // post or get contentType:"application/json;charset=utf-8", da

AJAX PHP无刷新form表单提交的简单实现(推荐)

ajax.php: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <script language="javascript"> function saveUserInfo() { //获取

请问C#中用户向数据库提交数据后,用户不能再提交第二次了,这样的代码怎么编?

问题描述 如题...需要什么样的变量控制呢? 解决方案 解决方案二:不需要每次插入的时候判断一下就可以了写个存储过程解决方案三:在数据库中加个标识字段,提交时先查标识字段?在界面上设个隐藏的静态变量?解决方案四:提交以后把按钮设置为不可用?解决方案五:引用1楼ericzhangbo1982111的回复: 不需要每次插入的时候判断一下就可以了写个存储过程 请问存储过程该如何编写?解决方案六:select*fromtableif@@count>0theninsertintotablevalues(,

提交表单后 PHP获取提交内容的实现方法_php实例

问题:网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常. 新版的PHP已经废弃了原来的表单内容处理方式,即不再把提交的表单的内容直接复制到一个同名变量中. 解决办法有四个: 1. 修改php.ini,查找 register_globals,将其值修改为 On.这样就可以像原来一样,例如,提交的表单中包括一个名为"username"的变量,那么在php中就可以直接使用$username来访问该变量.但是,除非你要使用一段旧的代码而考虑到兼容性问题,否则