【发布时间】:2010-01-18 01:26:27
【问题描述】:
我正在开发一个应用程序,该应用程序使用 Jquery 来拦截我的表单提交以代替 Ajax 提交。到目前为止,一切都很好!一切都很好.. 如果客户端没有启用 JS,应用程序将保持完美运行。
好吧,今天我创建了一个新表单,但 JQuery 不拦截提交。确实,我改变了一点,但仍然如此。它应该工作。
我有一个简单的 PartialView,其中包含表单、一个 span 和两个按钮(NO(按钮)和 YES(提交))。我使用 RenderPartial("MyPartial") 到 DIV 和插件 FancyBox 将其显示为模式。根据单击哪个链接以显示模式,我更改表单的操作(报告垃圾邮件或删除项目)和具有特定消息的跨度。就像一个“花哨”的确认信息!
再次,到目前为止一切顺利。我更改了表单操作并且它可以工作(使用警报(form.attr(action)),我使用正确的消息更改跨度并且它可以工作,但是当我单击按钮提交表单(是)时,它会直接进行我提出了一个正常的请求,而不是我想要的 Ajax 请求。
这是表格:
<form id="dialogForm" action="" method="post">
<div class="form_item_button">
<span id="dialogQuestion" style="color: Black;"></span>
<button id="btDialogNo" type="button" value="button" class="btn">No</button>
<button id="btDialogYes" type="submit" value="Submit" class="btn">Yes</button>
</div>
</form>
这是拦截表单提交的脚本:
$(document).ready(function() {
var theForm = $("#dialogForm");
// I CHECK IF THE ACTION WAS SET PROPERLY
// MY TESTS SHOW ME THAT THE ACTION IS OK!
alert(alert(theForm).attr("action"));
theForm.submit(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
data: theForm.serialize(),
url: theForm.attr("action"),
dataType: "json",
success: function(json) {
alert(json.Status);
},
error: function() {
alert('An error occurred while processing your request. Please try again.');
}
});
});
有什么想法吗?我花了整整一天的时间试图修复它! :(
谢谢
【问题讨论】:
-
在 $.ajax({}); 之后尝试
return false;? -
我没有工作,伙计们!这很奇怪..因为它与我的整个网站完全相同。 :( 我不知道该怎么办……说真的……
-
如果您在实际事件处理程序之后立即添加警报,您会得到什么?
-
对不起,我的意思是在事件处理函数的顶部,就像在
.submit()之后但在preventDefault()之前?
标签: asp.net-mvc jquery fancybox