我通过jQuery AJAX将一些数据发布到PHP脚本中,并且一切正常执行,但是返回了404错误。在我的Firebug控制台中,PHP脚本的响应是正确的。我不了解该脚本如何响应,它仍然会引发404错误。jQuery的“错误”回调方法将触发,而“成功”方法则不会触发。
PHP脚本执行的所有语句都能正常工作,因为我可以看到数据库正在更新等。
我在Dreamhost托管的WordPress 3.x网站上使用jQuery 1.4.2。
- - - - - -更多信息 - - - - - -
好的,我发现当我wp-blog- header.php在Ajax脚本中包含WordPress的文件时,会出现错误。而且,从前这些脚本可以工作,而且我90%确信它们在WP 3.0更新之后就停止了工作。我将粘贴Firebug的Response标头。
wp-blog- header.php
来自PHP的此标头响应包括wp-blog-header.php,并在Firebug中返回404错误…
Date Tue, 10 Aug 2010 01:44:44 GMT Server Apache X-Powered-By PHP/5.2.6 X-Pingback http://www.learnwake.com/xmlrpc.php Expires Wed, 11 Jan 1984 05:00:00 GMT Cache-Control no-cache, must-revalidate, max-age=0 Pragma no-cache Last-Modified Tue, 10 Aug 2010 01:44:44 GMT Vary Accept-Encoding Content-Encoding gzip Content-Length 36 Keep-Alive timeout=2, max=98 Connection Keep-Alive Content-Type text/html; charset=UTF-8
来自PHP的此标头响应不包含wp-blog-header.php,并在Firebug中返回了200 OK。
Date Tue, 10 Aug 2010 01:44:58 GMT Server Apache X-Powered-By PHP/5.2.6 Vary Accept-Encoding Content-Encoding gzip Content-Length 36 Keep-Alive timeout=2, max=100 Connection Keep-Alive Content-Type text/html
当包含时wp-blog- header.php,最终将引导整个WordPress安装程序。该函数wp()被调用,该函数调用$wp->main(),后者又调用各种设置函数。
wp()
$wp->main()
其中之一是$wp->query_posts(),它调用$wp_the_query->query(),而后者又调用WP_Query的parse_query()功能。我 怀疑 在其中生成了404指示(您的AJAX页面不是WP帖子,或类似的东西),后来通过$wp->handle_404()在after query_posts()中调用的函数转换为实际的404响应头main()。
$wp->query_posts()
$wp_the_query->query()
WP_Query
parse_query()
$wp->handle_404()
query_posts()
main()
我不是100%肯定parse_query()是罪魁祸首,但是我建议您看看是否可以只包含wp- load.php它,因为我相信它确实可以创建要访问的对象。
wp- load.php
再说一次,我实际上并没有使用WordPress,所以不能确定,但是据我所知,从源代码来看,这似乎是最有可能的情况。