jQuery ajax错误什么都不做

时间:2013-08-10 17:18:52

标签: jquery error-handling

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

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

这就是我所拥有的:

$.ajax({

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

2 个答案:

答案 0 :(得分:0)

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

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

更新

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

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

在进行标头调用之前,根本不需要包含发送到Web服务器的空间的字符。如果不了解CMS的内部结构,我无法帮助您。

既然你说什么都没有,我就会问。在浏览器中打开URL时会得到什么?你也可以发布用于在浏览器中打开它的URL以及PARAMS的内容。

告诉我们什么     的console.log( '../组件/ COM _ '+ PARAMS +'/ menu.php'); 确实。如果你把它放在前面     $就({

答案 1 :(得分:0)

您的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);
     }
  }
});