在我的开发机器上一切正常。在实时服务器(Godaddy)上,来自BuddyPress的AJAX请求返回结果并在FireBug中出现404错误。但是剧本看到结果失败了,指标继续旋转。
示例:主页上的http://jobaru.com/有最新的|有效|使用AJAX以及组页面上的字母在memebers下流行。
我尝试的事情:双重检查文件实际上是先存在,检查权限是否能够读取。做了全新安装。
有关为什么会返回404标头和有效响应的任何想法?
答案 0 :(得分:3)
我不知道它为什么会返回404,但是在do_action()
status_header( 200 );
我正在运行一个经过大量修改的BuddyPress 1.0 RC1版本,并拦截了bp-custom.php中的ajax帖子,但是在我做自己的逻辑之前在自定义文件中设置状态标题对我来说很合适。 / p>
答案 1 :(得分:2)
而不是黑客攻击Buddypress核心将在下一次更新时使用,你应该添加一个函数来拦截所请求的操作:
我的问题是,在活动循环中的自定义组url中,“more link”在admin-ajax.php上收到404响应标头错误。如果我检查响应内容,那么所有活动数据都在那里。所以我不确定是什么导致了这个问题。
为解决此问题,我添加了一个函数,当触发ajax调用时,该函数将返回状态标题200。在我的情况下,我需要“get_older_updates”动作,但我想你可以将它用于/bp-themes/bp-default/_inc/ajax.php:27中定义的任何其他动作
add_action( 'wp_ajax_activity_get_older_updates', 'bp_dtheme_activity_template_loader2' );
add_action( 'wp_ajax_nopriv_activity_get_older_updates', 'bp_dtheme_activity_template_loader2' );
function bp_dtheme_activity_template_loader2(){
if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'activity_get_older_updates')
{
status_header( 200 );
}
}
答案 2 :(得分:1)
根据你的评论判断,这似乎与GoDaddy有关。在你听到他们的支持回复之前,我会修改AJAX脚本以忽略该特定请求的404错误。
答案 3 :(得分:1)
我在GoDaddy遇到这个问题,这让我发疯,但我找到了解决方案。发送200状态代码(标题(“HTTP / 1.1 200 OK”);)没有为我摆脱404。我有一个mod_rewrite规则,将标准URL路由到我的index.php,所以这样的URL:
www.example.com/myroute/ajax_get_current
被发送到我的应用程序基本上是这样的:
www.example.com/index.php/myroute/ajax_get_current
非常标准的东西。当我在文档根目录下创建一个与我的路由名称相同的文件时,问题就出现了:
DOCROOT/myroute.php
然后我会得到完全如所描述的结果 - 404错误,但是正确的响应。我确认如果我将文件更改为“myroute_cron.php”,404将消失(适当的200),如果我将其更改回来,则会给404.
我不知道为什么会发生这种情况(特别是因为它显然正在执行正确的脚本以获得正确的响应),也许是MultiViews的东西。希望这会有所帮助。
答案 4 :(得分:0)
我正在看一下AJAX响应,看起来它不是纯粹的HTML它返回,它在开头有这个:0 [[SPLIT]]和最后的零。这可能与它有关吗?
答案 5 :(得分:0)
确保您已经为ajax失败添加了错误处理程序(错误)?尝试先隐藏旋转指示器,看看效果是否正在发生。
答案 6 :(得分:0)
FWIW,我在GoDaddy.com托管时看到了与JSON格式的回复完全相同的问题,作为WordPress插件的一部分。 JSON结果正确发送,但HTTP响应的状态代码为404。
我相信这是他们的Apache标头/配置的问题,我将试图抓住他们的技术支持团队(祝我好运),试图找到它的底部。 / p>
如果我收到他们的回复,我会在这里发帖。
答案 7 :(得分:0)
使用AJAX播放Country city下拉菜单时遇到404响应错误,问题是
<select name="lm_country" id="lm_coutry"
onChange="getCity('getcities.php?country='+this.value)">
然后我给出了下面列出的完整网址; -
<select name="lm_country" id="lm_coutry"
onChange="getCity('http://localhost/civic/includes/getcities.php?country='+this.value)">