0

在我的开发机器上一切正常。在实时服务器 (Godaddy) 上,来自 BuddyPress 的 AJAX 请求在 FireBug 中返回结果和 404 错误。但脚本将结果视为失败,指标继续旋转。

示例: http: //jobaru.com/ 主页上有最新 | 活跃 | 在使用 AJAX 以及组页面上的字母的成员中很受欢迎。

我尝试过的事情:首先仔细检查文件实际上是否存在,检查权限以便能够读取。进行了全新安装。

关于为什么它会返回 404 标头和有效响应的任何想法?

4

8 回答 8

3

我不知道为什么它返回 404,但是尝试在 do_action() 之前将这行代码添加到 /wp-content/plugins/buddypress/bp-core/bp-core-ajax-handler.php

status_header( 200 );

我正在运行一个经过大量修改的 BuddyPress 1.0 RC1 版本,并拦截 bp-custom.php 中的 ajax 帖子,但在我执行自己的逻辑之前在自定义文件中设置状态标头对我来说效果很好。

于 2009-06-05T19:04:53.437 回答
2

您应该添加一个函数来拦截请求的操作,而不是破解 Buddypress 核心,这将在下一次更新时停止:

我的问题是,在活动循环中的自定义组 url 中,“更多链接”在 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 );
    }
}   
于 2013-02-22T12:32:28.100 回答
1

从您的评论来看,这似乎与 GoDaddy 有关。在您收到他们的支持之前,我会修改 AJAX 脚本以忽略该特定请求的 404 错误。

于 2009-06-04T05:03:07.770 回答
1

我在 GoDaddy 上遇到了这个问题,这让我发疯,但我找到了解决方案。发送 200 状态代码 (header("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 的问题。希望这可以帮助。

于 2012-07-06T23:08:36.623 回答
0

我正在查看 AJAX 响应,它看起来不是它返回的纯 HTML,而是在开头有这个:0[[SPLIT]],最后是一个零。这可能与它有关吗?

于 2009-06-04T01:27:21.057 回答
0

确保您已经为 ajax 失败(错误)添加了错误处理程序?尝试先隐藏旋转指示器以查看正在发生的效果。

于 2009-06-04T01:27:38.607 回答
0

FWIW,当托管在 GoDaddy.com 上时,我已经看到将 JSON 格式的回复作为 WordPress 插件的一部分存在完全相同的问题。JSON 结果已正确发送,但 HTTP 响应的状态代码为 404。

我相当确信这是他们的 Apache 标头/配置的问题,我将尝试联系他们的技术支持团队(祝我好运),以试图找出问题的根源。

如果我得到他们的回复,我会在这里发帖。

于 2009-12-19T19:20:12.827 回答
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)">
于 2010-08-10T05:56:12.813 回答