奇怪的jQuery Ajax问题

4

我遇到了一个奇怪的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'))
});

现在,我正在观察Firebug,发现向我尝试获取的页面发送了一个POST请求,但是附带着一个301永久重定向头,并紧随其后的是同一页面的GET请求。
如何确保这种情况不会发生,或者如何解决它?

4
我不认为这与你的前端代码有任何关系。似乎是服务器在重定向你的POST请求,因为它可能不接受该路由的POST请求? - rbhalla
您的服务器代码正在重写请求以添加尾部的 /。请检查您的 Apache 重写规则/ PHP 代码。 - Matt
问题仅在于您是否看到了重定向?如果/views/clients/返回您想要的数据,那么在调用函数时只需将/附加到URL即可。 - Joe
如果在URL末尾添加/index.php,它就不会执行这个双重的post/get操作... - Kevin
请记住,这是一个301重写规则,它是永久性的。 如果您正在尝试从另一台从未访问过该网站(未受重写规则影响)的计算机上运行此脚本,则应该可以正常工作。是吗? - Ofir Baruch
显示剩余7条评论
2个回答

0

目前还不能评论,所以我就在这里说了:

我遇到了类似的问题(有一个.htaccess重定向,已经被删除,但仍然被重定向),这是浏览器缓存的原因。尝试清除缓存,看看是否还会出现这种情况。

祝你好运!


不,不是这样的。我已经尝试过重新启动服务器、重新启动Apache、完全清除所有涉及机器的缓存等等...但仍然会添加“/”。——o7th Web Design 3小时前 - Kevin

0

最好的方法是尝试@Alexandre Reiff Janini所说的,如果不起作用,请尝试使用不同的浏览器,因为它们的品牌可能会非常激进地缓存路由。

我注意到你正在使用firebug,有一个名为Web开发者工具栏(适用于Mozilla)的工具栏,其中有一个选项可以在编辑htaccess文件时禁用DNS缓存,有时对我有用。

编辑:无法添加评论,因此我将进行编辑,

您可能有多个.htaccess文件,您应该在您认为是正确的文件中放置一个规则,并查看它是否确实是正确的文件。然后,您就可以确定它不是.htaccess了,

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


不,不是这样的。我已经走到重启服务器、重启Apache、完全清除所有相关机器缓存等步骤了...还是会添加“/”。——o7th Web Design 3小时前 - Kevin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接