【问题标题】:jQuery Ajax post to PHP script gives 404 errorjQuery Ajax 发布到 PHP 脚本会出现 404 错误
【发布时间】:2012-07-03 14:47:34
【问题描述】:

我正在尝试编写一个在线实验,该实验使用 jQuery 和 ajax 将一些数据发布到一个 PHP 脚本,该脚本将数据保存到文本文件中,但我遇到了一些问题。当我发布的数据很小(比如 2kb)并且会正确保存发布的数据时,脚本可以正常工作,但是当帖子中的数据变为 4kb 或更大时,我会收到 404 错误,并且 PHP 脚本不会在all(没有数据保存到文件中),这很奇怪。以下是相关的 javascript 和 PHP 代码:

experiment.js:

$.ajax({
    url: 'snippets/saveData.php',
    data: {"time": time, "experimentStimuli": experimentStimuli, "experimentPredictions": experimentPredictions, "experimentPredictionsEnd": experimentPredictionsEnd},
    type: 'POST'
    });

保存数据.php:

$_SESSION['user']['experimentStimuli'] = $_POST['experimentStimuli'];
$_SESSION['user']['experimentPredictions'] = $_POST['experimentPredictions'];
$_SESSION['user']['experimentPredictionsEnd'] = $_POST['experimentPredictionsEnd'];

foreach($_SESSION['user']['experimentStimuli'] as $key => $value) {
  foreach($value as $key2 => $value2) {
    fwrite($fh, $value2);
  }
  fwrite($fh, "\n");
}

foreach($_SESSION['user']['experimentPredictions'] as $key => $value) {
  foreach($value as $key2 => $value2) {
    fwrite($fh, $value2);
  }
  fwrite($fh, "\n");
}

foreach($_SESSION['user']['experimentPredictionsEnd'] as $key => $value) {
  foreach($value as $key2 => $value2) {
    fwrite($fh, $value2);
  }
  fwrite($fh, "\n");
}

我尝试使用绝对 URL 而不是相对 URL,但没有区别(相对 URL 适用于小数据),我也尝试使用 header('HTTP/1.1 200 OK');在我的 PHP 脚本的顶部,但这似乎也不起作用。虽然我的网站的基础是 Wordpress,但我的实验代码与它是分开的,不需要任何 Wordpress 功能,但它显示的 404 错误页面是 Wordpress 404 页面。我有一种感觉,Wordpress 可能会以某种方式干扰(也因为它在本地运行良好),但我不确定如何解决它。有什么想法吗?

【问题讨论】:

  • 如果你得到 404.its 文件未找到。
  • 这可能是由 .htaccess 将您的查询重定向到不知道如何将 URL 处理为有意义的内容的 WordPress 引起的。如果是这种情况,了解 WordPress 以及它如何控制 .htaccess 文件的人可以帮助您。
  • 我在 phonegap(crosswalk) 应用程序中遇到了类似的问题。在网络应用程序中,数据图像已发布,但在应用程序中,当文件存在并配置白名单插件时,我得到 404。您发布的数据似乎有帖子大小(或 json)限制

标签: php jquery ajax wordpress


【解决方案1】:

请检查您的 php.ini 是否有以下内容:

  • post_max_size
  • memory_limit

如果其中任何一个的限制为 4kb,则您的发布请求将失败。这里memory_limit 优先于post_max_size。一般memory_limit应该大于post_max_size

这里,当使用整数时,该值以字节为单位。要更改更大尺寸的值,您可以使用 K (kilo)、M (mega) 和 G (giga)。例如10K2M

【讨论】:

  • post_max_size 和 memory_limit 的限制都远高于 4kb(分别为 8MB 和 64MB),所以很遗憾我认为这不是问题。
【解决方案2】:

wordpress 中的 Ajax 处理方式略有不同, 请在此处阅读:http://codex.wordpress.org/AJAX_in_Plugins 本文将简单解释如何在 wordpress 中使用 AJAX,既适用于 Admin-End 也适用于 User-end 。 即使它被称为“ajax in plugins”,它实际上描述了在 wordpress 中处理 ajax 的最简单方法。

【讨论】:

    猜你喜欢
    • 2011-05-21
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2018-11-26
    • 1970-01-01
    • 2017-02-05
    • 2011-08-11
    相关资源
    最近更新 更多