ajax提交表单,MVC下action执行两次,前台只执行一次,求解
前台ajax提交:
第一步,点击添加按钮:
<td><a class="easyui-linkbutton" onclick="ns.rolelist.add();">添加</a></td>
第二步,调用add()方法:
ns.rolelist.add = function () {
userAE({
iconCls: 'icon-add',
formUrl: '/DZZHYHDHCB/Add'
});
};
第三步,调用 userAE()方法,通过href方式打开另一个编辑页面窗口:
var userAE = function (options) {
var opt = options || {};
var queryParams = opt.queryParams;
var href = '/DZZHYHDHCB/DzzhyhdAE?t=' + new Date().getTime() ;
if (queryParams && queryParams.DZZHYHDHCBBH) {
href += '&id=' + queryParams.DZZHYHDHCBBH;
}
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();
}
}
});
}
}, {
text: '关 闭',
iconCls: 'icon-cancel',
plain: true,
handler: function () {
d.dialog('destroy');
}
}]
});
};
第四步,点击新窗口“保存”按钮,后台action执行保存:
public JsonResult Add(CLBAXXTZ q)
{
Message msg = new Message();
CLBAXXTZService usService = new CLBAXXTZService();
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,页面卡住。我这就这里调用了这个方法,不知道为什么会出错