jQuery Ajax返回404错误,但正确响应

Mik*_*Lin 31 ajax wordpress jquery

我通过jQuery AJAX将一些数据发布到PHP脚本,一切都正确执行,但它返回404错误.在我的Firebug控制台中,PHP脚本的响应是正确的.我不明白脚本如何响应,它仍然抛出404错误.jQuery"error"回调方法触发,而"success"方法则不触发.

PHP脚本执行的所有语句都能正常工作,因为我可以看到数据库正在更新等.

我在Dreamhost托管的WordPress 3.x网站上使用jQuery 1.4.2.

- - - - - -更多信息 - - - - - -

好的,我已经发现当我wp-blog-header.php在Ajax脚本中包含WordPress的文件时,我得到了错误.此外,曾几何时这些脚本工作,我90%肯定他们在WP 3.0更新后停止工作.我将粘贴Firebug的Response头.

这个来自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
Run Code Online (Sandbox Code Playgroud)

来自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
Run Code Online (Sandbox Code Playgroud)

Tim*_*one 47

当你包含时wp-blog-header.php,你最终会引导整个WordPress安装程序.wp()调用该函数,调用该函数,该函数$wp->main()又调用各种设置函数.

其中之一是$wp->query_posts(),它调用$wp_the_query->query(),这反过来又调用WP_Queryparse_query()函数.我怀疑的是,404指示在那里产生(你的AJAX页面不是WP后,或类似的东西),并随后转化成实际的404响应头$wp->handle_404(),后调用的函数query_posts()main().

我不是百分之百确定这parse_query()是明确的罪魁祸首,但我建议你看看你是否可以只包括wp-load.php,因为我相信它能够创建你想要访问的对象的实际工作.

同样,我实际上并没有使用WordPress,所以我不能确定,但​​从源代码看,这似乎是最可能的情况,从我所知道的.

  • 蒂姆.我非常爱你,你不知道.这困扰了我一段时间.将include更改为wp-load.php有所不同.所以,在一天结束时,我认为这是导致问题的WordPress升级. (3认同)