2017-07-19 57 views
-2

我在标题中指定IE,因为我的代码在Chrome上按预期工作。基本上我有一个叫做“维护”的视图,用于创建,编辑和删除。表单本身包含在部分视图中(巧合地称为“_MaintenanceForm”),它具有自己的GET/POST方法来提交表单。 Here is the form.对不起,我不得不使用Pastebin而不是内联代码块 - 它们让我越过了字符限制。IE在提交表单后不会重新发送AJAX调用

请注意,表单有ID #maintenanceForm。我只是使用jQuery函数$("#maintenanceForm").submit();而不是使用AJAX调用来提交此表单,因此我不需要将所有字段作为数据传递。 Here is my JavaScript for the Maintenance page.

我知道.submitForm点击函数被定义了两次,这是多余的代码,但我最初把它作为一个单独的函数导致了问题,所以我将它定义为匿名内联代替。一旦我在IE中使用它,我可以专注于清理我的代码。

我的维护视图非常简单,它只是一个<div class="maintenance-form"></div>,维护窗体局部使用第一个AJAX调用呈现。 Here are my controller methods.基本上我遇到的问题是,在Chrome中,在MaintenanceForm POST方法之后,将调用维护GET方法,该方法重新呈现视图。重新呈现视图时,将通过AJAX调用再次调用MaintenanceForm GET和SearchTable2方法。在IE中,维护GET方法被调用,但AJAX调用不会重新提交,因此表单不会刷新。因此,我需要手动刷新页面才能看到所做的更改。

正如我所说的,它的工作原理与我在Chrome浏览器时一样,但不是IE浏览器,所以我知道它一定是某种IE兼容性问题,但我无法想象它是否适合我的生活。预先感谢任何帮助,并让我知道如果提供更多的代码将有所帮助!

+0

[我怎么问好问题?](https://stackoverflow.com/help/how-to-ask/) – Andreas

+0

@MichaelCoxon我不知道要搜索“缓存”。我做了很多搜索,找不到任何东西,所以我问自己的问题。然而,添加'$ .ajaxSetup({cache:false});'确实有效,所以如果你想让这个答案我很乐意接受。谢谢你的帮助! –

回答

0

@Michael Coxon是正确的,IE缓存ajax调用。尝试

$.ajaxSetup({ cache: false }); 

这应该允许您的窗口在每次调用维护GET方法时刷新。如果你想这只能在IE不缓存,试图

var ieVersion = (function() { if (new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null) { return parseFloat(RegExp.$1); } else { return false; } })();// IE <= 10 
var isIE2 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;// IE 11 
if(ieVersion < 11 || isIE2) { 
    $.ajaxSetup({ cache: false }); 
} 

这是有点hackish的,但限制了运行IE浏览器的任何版本

参考:http://api.jquery.com/jquery.ajax/

+1

谨慎解释downvote? – bowl0stu

相关问题