MVC提交表单,action执行两次,前台只执行一次,求解 100
前台ajax提交:第一步:点击保存按钮:<td><aclass="easyui-linkbutton"data-options="iconCls:'icon-save',...
前台ajax提交:
第一步:点击保存按钮:
<td><a class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" onclick="ns.rolelist.save();">保存</a></td>
第二部:调用:
var userAE = function (options) {
var opt = options || {};
var queryParams = opt.queryParams;
var href = requestDZ + '/CLBAXXTZ/ClbaxxtzAE?t=' + new Date().getTime() + "&Token=" + Token + "&Authorization=" + Authorization + "&UserID=" + UserID;
if (queryParams && queryParams.CLBAXXTZBH) {
href += '&id=' + queryParams.CLBAXXTZBH;
}
var d = MyExt.dialog({
id: 'usAE_form',
iconCls: opt.iconCls,
height: 440,
width: 600,
title: '管理',
href: href,
buttons: [{
text: '保 存',
iconCls: 'icon-save',
plain: true,
handler: function () {
MyExt.msgProgress();
var f = d.find('form');
f.form('submit', {
url: opt.formUrl,
queryParams: opt.queryParams || {},
onSubmit: MyExt.formValid,
success: function (data) {
try {
var json = $.parseJSON(data);
MyExt.showOrAlert(json, function () {
$('#usAE_form').dialog('destroy');
rolelist_dg.datagrid('load').datagrid('unselectAll');
});
} finally {
MyExt.closeProgress();
}
}
});
}
}
});
};
第四部,后台action执行保存:
public JsonResult Add(DZYJXXTZ q)
{
Message msg = new Message();
DZYJXXTZService usService = new DZYJXXTZService();
usService.AutoCloseSession = false;
try
{
usService.Save(q);
msg.setShortMsg(true, "添加数据成功");
}
catch (Exception ex)
{
msg.msg = "错误:" + ex.Message;
}
finally
{
usService.Close();
}
return Json(msg, "text/plain");
}
产生的错误就是,前台只执行一次,调试不报错。后台action 执行两次。
导致,第一次执行的时候,一条数据存入了数据库。返回成功,第二次执行的时候,就会存入一条新的数据,所有值为空。导致浏览器报错 jquery.min.js,页面卡住。
我这就这里调用了这个方法,不知道为什么会出错 展开
第一步:点击保存按钮:
<td><a class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" onclick="ns.rolelist.save();">保存</a></td>
第二部:调用:
var userAE = function (options) {
var opt = options || {};
var queryParams = opt.queryParams;
var href = requestDZ + '/CLBAXXTZ/ClbaxxtzAE?t=' + new Date().getTime() + "&Token=" + Token + "&Authorization=" + Authorization + "&UserID=" + UserID;
if (queryParams && queryParams.CLBAXXTZBH) {
href += '&id=' + queryParams.CLBAXXTZBH;
}
var d = MyExt.dialog({
id: 'usAE_form',
iconCls: opt.iconCls,
height: 440,
width: 600,
title: '管理',
href: href,
buttons: [{
text: '保 存',
iconCls: 'icon-save',
plain: true,
handler: function () {
MyExt.msgProgress();
var f = d.find('form');
f.form('submit', {
url: opt.formUrl,
queryParams: opt.queryParams || {},
onSubmit: MyExt.formValid,
success: function (data) {
try {
var json = $.parseJSON(data);
MyExt.showOrAlert(json, function () {
$('#usAE_form').dialog('destroy');
rolelist_dg.datagrid('load').datagrid('unselectAll');
});
} finally {
MyExt.closeProgress();
}
}
});
}
}
});
};
第四部,后台action执行保存:
public JsonResult Add(DZYJXXTZ q)
{
Message msg = new Message();
DZYJXXTZService usService = new DZYJXXTZService();
usService.AutoCloseSession = false;
try
{
usService.Save(q);
msg.setShortMsg(true, "添加数据成功");
}
catch (Exception ex)
{
msg.msg = "错误:" + ex.Message;
}
finally
{
usService.Close();
}
return Json(msg, "text/plain");
}
产生的错误就是,前台只执行一次,调试不报错。后台action 执行两次。
导致,第一次执行的时候,一条数据存入了数据库。返回成功,第二次执行的时候,就会存入一条新的数据,所有值为空。导致浏览器报错 jquery.min.js,页面卡住。
我这就这里调用了这个方法,不知道为什么会出错 展开
1个回答
展开全部
首先你确保看确实调用了几次,如果真是调用一次,不可能返回两次。
别用debug模式,直接点击看现象:
浏览器端,看网络控制台下,到底发送了几次请求
后台最好打印一下,请求时间,客户端ip,这样更能验证是哪个客户端请求的。
看最终现象是什么,再采取下步操作
别用debug模式,直接点击看现象:
浏览器端,看网络控制台下,到底发送了几次请求
后台最好打印一下,请求时间,客户端ip,这样更能验证是哪个客户端请求的。
看最终现象是什么,再采取下步操作
追问
确实是只调用了一次。不用debug,一样的错误。第一条能成功提交,然后会提交一个空的进去,返回json为空,就报错jquery。数据里也是会有两条,一条对的,一条空的
追答
你照我给你说的方法,试试,看看
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询