【问题标题】:jQuery ajax error do nothingjQuery ajax 错误什么也不做
【发布时间】:2013-08-10 17:18:52
【问题描述】:

这是一个非常基本的问题,不应该像原来那么难。

我有自己开发的 CMS。我正在使用 ajax 来更改表单参数。当用户选择没有“特殊参数”的选项时,我不想显示任何内容。现在,我有 ajax 搜索文件。如果文件存在,它应该显示在 div 中。如果它不存在,我不想显示任何内容。截至目前,当文件不存在时,div 会加载整个页面并出现 404 错误。我不想显示错误,当文件不存在时我什么都不想要。

这就是我所拥有的:

$.ajax({

url: '../components/com_'+PARAMS+'/menu.php',
success: function(result){
     $('#menuparams').html(result);
},
error: function(){
    $('#menuparams').html('');
}
});

【问题讨论】:

  • 你是cms设置一个404 http状态码还是只显示一个带有404消息的页面。
  • 只显示一个带有 404 消息的页面

标签: jquery error-handling


【解决方案1】:

听起来您的路径被路由到无法发送 HTTP 响应标头的 CMS。要么您忘记在 CMS 的响应标头中发送 404,要么您在尝试发送标头之前向页面发送了文本。

如果是这种情况,您可以修复您的 CMS。或者您可以检查 404 错误的成功结果。

更新

在您的 CMS 中,当没有找到某些内容时,在发送其他任何内容之前您必须执行以下操作:

<?php
header("HTTP/1.0 404 Not Found");
?>

在调用 header 之前,根本不需要任何字符,包括发送到 Web 服务器的空格。如果不了解您的 CMS 的内部结构,我无法为您提供更多帮助。

既然你说你一无所获,我得问问。在浏览器中打开 URL 会得到什么?您还可以发布在浏览器中打开它时使用的 URL 以及 PARAMS 的内容。

告诉我们什么 console.log('../components/com_'+PARAMS+'/menu.php'); 做。如果你把它放在前面 $.ajax({

【讨论】:

  • 如何查看成功结果?到目前为止我尝试过的所有东西都没有发回任何东西。
  • 我正在处理的 CMS 部分是导航菜单编辑。为用户提供了许多菜单类型选项(内容、联系人、照片库等)。当他们选择菜单类型时,需要为菜单类型动态加载参数。所以“PARAMS”是基于他们选择的菜单类型。我现在有 .htacces 控制 404 错误。我会尝试删除它,看看是否有帮助。
  • 这是.htaccess。它现在可以工作了,但是现在我没有自定义 404 页面。
【解决方案2】:

您的 jQuery 代码在我看来是正确的,问题似乎是您的 CMS 返回的内容。由于您说 div 加载了 404 错误的整个页面,因此 CMS 似乎实际上并没有在响应中设置 404 状态,它只是返回一个 404 错误页面。在这种情况下,jQuery 不会知道这是一个错误,而是会执行成功函数。

如果您可以让 CMS 设置 404 状态,那么您的 jQuery 代码将按预期工作。如果你不能,你可以把你的代码改成这样:

$.ajax({
  url: '../components/com_'+PARAMS+'/menu.php',
  success: function(data) {
     if ($(data).find(... something only the 404 error page has ...).length) {
       $('#menuparams').html('');
     } else {
       $('#menuparams').html(data);
     }
  }
});

【讨论】:

  • 如何更改我的 CMS 以在响应中设置 404 状态?
  • 这就是完整的问题。我有一个通过 CMS 索引页面路由所有页面的 htaccess 文件。从那里使用 PHP 和 MySQL 处理页面。使用 jQuery ajax 的问题是它不会在 .htaccess 文件处于活动状态时读取 404 页。无论如何我可以获取有关 ajax 获取的文件的信息吗?这样,如果我可以设置要标记的变量,我就知道它是 404 页面而不是 CMS 页面?
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多