这怎么可能是Request.IsAjaxRequest()是从Firefox真实的,但使用jQuery后,当从IE假

StackOverflow https://stackoverflow.com/questions/2371921

我试图测试jQuery的岗位。我张贴的格式,并希望在Ajax更新,并成功形成覆盖一个div取代(似乎是一个常见的情况)。

在下面的代码工作在Firefox细而不是在IE。

<强>的一个问题是从Firefox Request.IsAjaxRequest()的是事实,但从IE来, Request.IsAjaxRequest()被返回false

请注意:我把Thread.sleep代码在我的控制器动作只是作为一个测试,以确保我可以看到怎么回事

下面是我的视图代码:

 <div id="contact">
   <form action="/Tracker/Add" method="post">
    <fieldset id="inputbox">
       <p>

        <label>Today's number</label>   <input class="inputText" id="weight" name="weight" type="text" value="208" /></p>
        <p><label>Today's Date</label>     <input class="inputText" id="datepicker" name="date" type="text" value="03-Mar-2010" /></p>
        <p><input type="submit" value="Enter" /></p>
    </fieldset>

 

和这里是JavaScript / jquery的代码:

<script type="text/javascript" src="../../Scripts/jquery/1.3.2/jquery-1.3.2.min.js"></script>

 <script type="text/javascript">
    $(document).ready(function() {
    $('#contact form').live('submit', function() {

            //$("#Loading").fadeIn(); //show when submitting

            $.post($(this).attr('action'), $(this).serialize(), function(data) {
                $("#contact").replaceWith($(data));
            });
            return false;
        });
    });
</script>

和这是我的控制器动作:

    public ActionResult Add()
    {
         if (if (Request.IsAjaxRequest())
         {
                  //firefox will hit this but IE wont
          }


        Thread.Sleep(5000);
        return PartialView("EntryView", new MyViewModel());
    }
有帮助吗?

解决方案

我确认您的代码(其中我无法找到一个错误)没有发送与jQuery 1.3.2和IE 6.0.2900.5512一个XHR请求; jQuery的升级到下一个可用的版本,1.4.0,修复破碎的行为。使用AJAX 1.4.0(或以上),IE的帖子的形式,并发送所述X要求-随着IsAjaxRequest()到工作所需标题。您是否能够升级jQuery的?我没有任何运气找到这个特定的错误/修复,但如果你需要坚持使用1.3.2,我可以继续挖掘。

其他提示

添加以下代码,后右jQuery代码:

jQuery.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    }
});

有强制浏览器添加 X-请求-用的每AJAX请求头。

值得关注的是使用jQuery的最新版本被推荐为有许多错误修复。

如果它没有帮助,请检查与请求的的Fiddler 以查看是否IE发送报头或不

它看起来像有一个JavaScript错误在IE从异步调用动作防止发生。验证HTTP头X-Requested-With: XMLHttpRequest的存在而调试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top