我在Craft CMS网站上使用了一些简单的AJAX页面转换,与这些说明非常相似:https://designbycosmic.com/journal/craft-cms-ajax-page-transitions-with-history-pushstate
我的代码的基本结构是:
$.ajax({
type: 'POST',
url: href,
data: {},
success: function(result){
// hide old content, load new content, fade in new content
},
error: function(){
console.log("ajax error");
}
});
“href”是要加载的新页面的链接。
我总是收到400(错误请求)错误。
我在完全相同的托管环境中对类似网站使用这种完全相同的方法并且它工作正常,所以我正在敲打为什么这会有不同的行为。
关于此主题的所有其他答案似乎都适用于“数据”格式不正确的情况,但是当您只是加载网址时没有解决问题,而没有其他数据。
在这种情况下,什么会导致400错误?
更新
好的,这里是任何善于帮助进一步调查的人的实时网站:http://mearch.nz/
仍然非常不完整,正在开发中。您应该能够在Home,Projects之间导航,然后在Projects索引中链接的任何项目详细信息页面之间导航。您将看到加载指示器刚刚卡在那里,新页面永远不会到达,因为AJAX失败。
如果你重新加载任何这些页面,他们工作正常。 URL没什么问题。由于某种原因,它不被接受为AJAX POST的正确数据。
现在进行比较,这是同一个网站主机上的另一个网站,使用相同的AJAX功能和相同的CMS,它工作正常:http://benek.nz/
答案 0 :(得分:1)
http:// mearch.nz/projects/ 未引用 http:// mearch.nz/js/init.js。但是 init.js 需要加载,因为它包含你的javascript代码! 相比之下http://benek.nz 确实引用了 init.js ,因此它可以正常工作。
看起来你在http:// mearch.nz上使用minmee,因此调试你的问题有点困难。
您的请求似乎有 CSRF -issue。如果javascript向Web服务器发送请求,这通常会发生,这与javascript的来源不同。
这就是我为重现您的问题所做的工作: