【问题标题】:Not able to find file using jQuery.post无法使用 jQuery.post 找到文件
【发布时间】:2010-08-01 12:19:50
【问题描述】:

我现在已经在几个 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 文件吗?

【问题讨论】:

  • 您确定这不是引荐来源问题,还是 WordPress 正在阻止的垃圾邮件阻止了 AJAX 请求?

标签: jquery wordpress jquery-post


【解决方案1】:

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

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

【讨论】:

  • 感谢您的提示。我在错误日志中发现了一些有趣的东西(见更新)。看起来 Apache 是问题的原因 - 不正确的路由或其他东西。有什么想法吗?
  • @Steven 我只知道如何得到这样的错误 - 也许你在某个时候直接请求 I:/Development...,所以 jQuery 试图获取 mysite.com/wp-content/插件/i:/开发... .您可以尝试将 JS 示例中的第三行更改为 jQuery.post("/wp-content... 吗?
  • 不,没用。但我已经缩小了我的问题。查看更新。
【解决方案2】:

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

【讨论】:

  • 在我的 PHP 文件中,在 &lt;?php php&gt; 之前,我已经写了 TEST - 当我使用相同的 url 打开我的文件时,它会输出。
  • “使用相同的网址打开”是什么意思?显然,您无法使用相对 URL 在浏览器地址栏中加载文件,因此它必须与您的代码示例不同。什么是绝对 URL?
  • 我也不确定 DNS 和 apache 配置在这种情况下有什么相关性。如果您可以使用 JavaScript 加载页面,那么显然您的网站已经设置好了。你试过把../wp-content/plugins/wp-eventcal/myfile.php改成wp-content/plugins/wp-eventcal/myfile.php吗?
  • jQuery 无法打开此 URL:http://mysite.com/wp-content/plugins/wp-myplugin/myfile.php。如果我将相同的 URL 直接粘贴到我的浏览器中,我就可以打开我的文件。但是,查看我的 Apache 错误日志,我发现了一些有趣的东西(请参阅更新)
  • .. 只将我带到 wp-admin 文件夹之外。如果我不添加..,它将尝试在 wp-admin 文件夹中查找文件。
猜你喜欢
  • 1970-01-01
  • 2011-04-23
  • 2016-01-19
  • 2017-09-12
  • 2020-11-23
  • 1970-01-01
  • 2016-02-26
  • 2018-06-16
  • 1970-01-01
相关资源
最近更新 更多