Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Jquery未拦截表单提交-Asp.net Mvc和Fancybox_Asp.net Mvc_Jquery_Fancybox - Fatal编程技术网

Asp.net mvc Jquery未拦截表单提交-Asp.net Mvc和Fancybox

Asp.net mvc Jquery未拦截表单提交-Asp.net Mvc和Fancybox,asp.net-mvc,jquery,fancybox,Asp.net Mvc,Jquery,Fancybox,我正在开发一个应用程序,它使用Jquery拦截我的表单提交,而不是Ajax提交。到现在为止,一直都还不错!一切都很顺利。。如果客户端没有启用JS,则应用程序将保持完美运行 今天我创建了一个新表单,但是JQuery没有拦截提交。我确实改变了一点,但仍然是。它应该是有效的 我有一个简单的PartialView表单,一个span和两个按钮NO-button&YES-submit。我将RenderPartialMyPartial用于一个DIV,并使用插件FancyBox将其显示为一个模式。根据点击显示模

我正在开发一个应用程序,它使用Jquery拦截我的表单提交,而不是Ajax提交。到现在为止,一直都还不错!一切都很顺利。。如果客户端没有启用JS,则应用程序将保持完美运行

今天我创建了一个新表单,但是JQuery没有拦截提交。我确实改变了一点,但仍然是。它应该是有效的

我有一个简单的PartialView表单,一个span和两个按钮NO-button&YES-submit。我将RenderPartialMyPartial用于一个DIV,并使用插件FancyBox将其显示为一个模式。根据点击显示模式的链接,我会更改动作报告垃圾邮件或删除表单中的项目,并使用特定消息显示范围。就像一个花哨的确认信息

同样,到目前为止,一切都很好。我更改表单操作,它使用alertform.attraction工作,我使用正确的消息更改跨度,它工作,但是当我单击按钮提交表单时,它会直接进行,我会发出一个正常请求,而不是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>
有什么想法吗,伙计们???我花了一整天的时间试图修复它!!:

谢谢

预防默认值似乎是。我不确定文档中是否删除了它,但这是一种新的方法,可以通过以下方式获得相同的效果:

让我知道这是否有效。我很好奇。

我注意到您在提交按钮中使用的是a而不是a

据我所知,这应该没问题,但在调用事件处理程序函数后立即创建警报,如:

    alert(e.attr("id"));
如果没有返回任何内容,那么问题是单击submit按钮会触发侦听的事件,即表单正在提交

但是,如果它返回的是按钮的id,而不是表单,那么问题可能是您在按钮上使用了preventDefault,而不是在表单上,反之亦然。这可能通过简单地使用return false并完全删除e.preventDefault来修复

但是,如果上述两种情况都不正确,并且在点击submit时收到警报,那么问题可能在于执行默认操作的脚本的时间

顺便问一下,ajax是否正在发生,但您也会得到一个表单提交,还是整个函数都被忽略了

我有一个表单,无论发生什么,它都会提交,除非我为validate函数添加了除了validate之外的其他功能。最终,它与错误的事件被触发有关。我添加的额外工作以某种方式使我所收听的活动最终赶上了进度。

两个问题

您用于发出警报的线路。 在ajax调用中缺少一些右大括号。 这是代码

$(document).ready(function() {
         var theForm = $("#dialogForm");

         // I CHECK IF THE ACTION WAS SET PROPERLY
         // MY TESTS SHOW ME THAT THE ACTION IS OK!
         alert(theForm.attr("action")); 

         theForm.submit(function(e) {
             e.preventDefault();
            alert('here');
             $.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.');
                 }
             });
         });
});​​​​

享受。

preventDefault并没有过时。您链接到的文档页面已过时,但当前文档中没有说明如何使默认设置过时。我没有工作,伙计们!这很奇怪。。因为它与我的整个网站完全相同我不知道该怎么办。。。说真的..@Dan-就像我说的,文档中不清楚,但是新文档没有提到preventDefault,并且它给出了一个不同的方法;就在$.ajax{};之后;?我没有工作,伙计们!这很奇怪。。因为它与我的整个网站完全相同我不知道该怎么办。。。说真的。如果在实际事件处理程序之后添加警报,会得到什么结果?对不起,我的意思是在事件处理程序函数的顶部,比如在.submit之后但在preventDefault之前?Anthony,我的函数完全被忽略了。我没有收到警告,Ajax帖子没有提交。我去掉了preventDefault,添加了ReturnFalse,将更改为,但它不起作用。真奇怪。我将尝试复制并粘贴我以前使用过的另一个表单,看看会发生什么,甚至可以通过ajax通过FancyBox调用PartialRender表单,看看它是否有效。。事实上,这就是我整个网站的工作方式,它的工作非常棒。我只是想避免做一个无用的ajax请求只是为了呈现表单。。。我会让你们一直更新的谢谢各位。我已经做到了:我从页面上删除了RenderPartial。现在,我使用FancyBox渲染这个部分。你猜怎么着?它在不改变任何东西的情况下工作。。。。废话!从一开始我就应该这样做,但这是另一个不必要的ajax请求。。嗯,很好。现在开始工作了!再次感谢!!
    alert(e.attr("id"));
$(document).ready(function() {
         var theForm = $("#dialogForm");

         // I CHECK IF THE ACTION WAS SET PROPERLY
         // MY TESTS SHOW ME THAT THE ACTION IS OK!
         alert(theForm.attr("action")); 

         theForm.submit(function(e) {
             e.preventDefault();
            alert('here');
             $.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.');
                 }
             });
         });
});​​​​