【发布时间】: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">×</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