1

我现在在几个 jQuery 脚本中使用了 jQuery.post,一切正常。但是在升级到 WordPress 3.0 之后,它就停止了工作。

我正在开发一个插件,其中包含以下 jQuery 代码:

//Delete event and remove from UI
jQuery("#eventList .cancelEvent").live('click', function() {
  jQuery.post("/wp-content/plugins/wp-eventcal/myfile.php", { instance: 'cancelEvent' },
  function(data)
  {
    alert('test');  // Never fires because 404 File Not Found
  });
});

Firebug 报告“未找到 404 文件”错误。这是链接: http: //mysite.com/wp-content/plugins/wp-myplugin/myfile.php

如果我复制链接并将其粘贴到我的浏览器中,该页面就会正常打开。没有“404 文件未找到”错误。

查看我的 Apache 错误日志,我看到以下错误:

Cannot map GET
/wp-content/plugins/I:/Development/wamp/www/norwegianfashion/wp-content/themes/norwegianfashion/images/icon.png HTTP/1.1 to file,
referer: http://norwegianfashion.com/wp-admin/admin.php?page=wp-eventcal/eventcal-manager.php

这是我的 Apache 配置:

LoadModule rewrite_module modules/mod_rewrite.so


NameVirtualHost localhost

<VirtualHost localhost>
    ServerName localhost
    DocumentRoot "I:/Development/wamp/www/"
</VirtualHost>

<VirtualHost localhost>
    ServerName mysite.com
    DocumentRoot I:\Development\wamp\www\mysite
</VirtualHost>

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

这是我的 .htaccess 文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

更新

好的,我已将其范围缩小到这一点。

只有当我使用 /%category%/%postname% 打开自定义永久链接时才会遇到问题。
如果我使用默认永久链接,一切正常。

再说一遍,它可能是我的 .htaccess 文件吗?

4

2 回答 2

1

只需检查 Apache 的错误日志,您就会看到真实的请求路径以及它被拒绝的原因。很可能您失败了 myfile.php 的相对路径,或者 wordpress 阻止了它。

您也可以尝试在 JS 代码中设置 myfile.php 的完整路径。

于 2010-08-01T12:32:02.910 回答
0

你确定网址是正确的?它是相对于 HTML 页面的,wordpress 的 index.php 通常与 wp-content 目录处于同一级别。因此,我倾向于怀疑 URL 应该是 'wp-content/plugins/wp-eventcal/myfile.php' 吗?

于 2010-08-01T12:32:20.093 回答