【问题标题】:Weird jQuery Ajax Issue奇怪的 jQuery Ajax 问题
【发布时间】:2014-07-16 13:35:54
【问题描述】:

我遇到了一个奇怪的 ajax 问题......嗯......不是问题,但你会看到/听到/阅读

这是我用来拉入页面的代码,你可以看到我正在使用 'POST' 来拉入它。

// Load page inner
function LoadPageInner($url, $cont){
var $loading = '<div class="pageLoader">Loading...<br /><img src="/assets/images/ajax-loader.gif" alt="loading..." height="11" width="16" /></div>';
var $container = jQuery($cont);
var $t = Math.round(new Date().getTime() / 1000);
var options = {
        url: $url,
        cache: false,
        type: 'POST',
        beforeSend: function(){
                $container.slideUp('fast', function(){
                    $container.slideDown('fast').html($loading);    
                });
            },
        success: function(data, status, jqXhr){
            $container.slideUp('fast', function(){
                $container.slideDown('fast').html(data);    
            });
        },
        error: function(jqXhr, status, error){
            $container.slideUp('fast', function(){
                $container.slideDown('fast').html('<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><i class="fa fa-exclamation-triangle fa-4x pull-left"></i><p><strong>Danger Will Robinson!</strong><br />There was an issue pulling in this page. Our support team has been notified, please check back later.</p></div>');    
            });
        }
    };
jQuery.ajax(options);
}

要使用它,我的链接有一个名为 is-ajax 的类,并在 window 加载中被触发:

// Internal site links
var $a = $('a.is-ajax');
$a.click(function(e){
    e.preventDefault();
    var $this = $(this);
    LoadPageInner($this.attr('href'), $this.attr('data-where'))
});

现在,我正在看萤火虫,POST 恰好出现在我试图拉入的页面上,但附加到它的是一个 301 Permanantly Moved 标题,然后在它的正下方是一个 GET 到同一页

如何确保不会发生这种情况,或者如何解决?

【问题讨论】:

  • 我认为这与您的前端代码无关。似乎服务器正在重定向您的 POST 请求,因为它可能不接受对该路由的 POST 请求?
  • 您的服务器代码正在重写请求以添加尾随/。检查您的 Apache 重写规则/PHP 代码。
  • 我做到了。最初 .htaccess 有重写规则,但我删除了它们,并重新启动了 apache... 问题仍然存在
  • 即使重新启动服务器也没有任何区别......
  • 问题仅仅是因为您看到了重定向吗?如果/views/clients/ 返回您想要的数据,那么只需在调用函数时将/ 附加到url。

标签: javascript php jquery ajax apache


【解决方案1】:

还不能评论,所以说:

我有一个类似的问题(有一个.htaccess 重定向,已被删除,但仍在重定向),它是浏览器的缓存。尝试清除它,看看是否会发生这种情况。

祝你好运!

【讨论】:

  • 不,不是。我已经重新启动服务器,重新启动 apache,完全清除所有涉及的机器上的缓存等等......仍然添加 / – o7th Web Design 3 小时前
【解决方案2】:

最好的办法是尝试@Alexandre Reiff Janini 所说的,如果这不起作用尝试不同的浏览器,根据品牌,他们可能会非常积极地缓存路由。

我注意到您使用的是 firebug,有一个工具栏(用于 mozilla),称为 web 开发人员工具栏,其中有一个禁用 DNS 缓存的选项,有时在编辑 htaccess 文件时对我有用。

编辑:无法添加 cmets,所以我将进行编辑,

您可能有多个 .htaccess 文件,您应该在您认为正确的文件中植入一条规则,看看它是否确实是正确的文件。那你就确定不是.htaccess了,

我能想到的唯一另一件事是 httpd.conf 中的指令,有关更多信息,请参阅此问题htaccess-limt 这是针对 htaccess 但我相信您可以在 Apache 配置文件中执行类似的操作

【讨论】:

  • 不,不是。我已经重新启动服务器,重新启动 apache,完全清除所有涉及的机器上的缓存等等......仍然添加 / – o7th Web Design 3 小时前
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2011-08-17
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多