JQuery AJAX为现有网址抛出404

时间:2012-10-16 20:29:40

标签: jquery ajax codeigniter http-status-code-404

我正在使用Jquery ajax来调用CodeIgniter函数:

$.ajax({
  type: "POST",
  dataType:'json',
  beforeSend: function() {
  $("#opc").addClass("opacity");
  $("#searching").show(); 
  },
  url: "<?php echo base_url(); ?>search/get_results",
  data: {
    'ns_pos':ns_pos,
    'NSPlaceDomainID':activity,
    'DistrictID':area,
    'NSAssociationID':referer,
    'Title':text,
    'SettlementID':settlement,
    'NoOpinion':$("input[name=NoOpinion]").is(":checked"),
     'SpecialCharacteristics':ns_attr
  } 

等...

在Chrome控制台中,我收到消息:

POST http://mattat.org.il/ci/index.php/search/get_results 404 (Not Found) 

回复预览是:

Not Found

The requested URL /ci/index.php/search/get_results was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

但是,此功能确实存在,因为我只是将链接粘贴到网址行中就很明显了。

我很困惑......

编辑:按照@ paul的建设性意见,我已将请求更改为GET,实际上,找到了该页面。什么可能导致这种模糊的行为?

还有一步:当我清空数据对象时(如:data:{}),即使使用POST请求也找不到 函数

3 个答案:

答案 0 :(得分:2)

正如Paul已经指出的那样,由于GET / POST限制,这可能是一个错误。如果您在此端点上支持POST请求,请检查您的服务器代码。

答案 1 :(得分:0)

请使用base_url(),而不是site_url()。我遇到过同样的问题。

可以给出一个简单的例子,其中查看ajax jQuery发布。

 $.post("<?php echo site_url('message/add') ?>", {message: msg}, function() {
        $('#content').load("<?php echo site_url('message/view/ajax') ?>");
        $('#message').val('');
    });

消息/添加在这里,因为您可以猜测该功能是在控制器中定义的。当我第一次处理php时,我搜索了一个很好的例子。我不仅是php的新闻,也是codeigniter的新闻。在许多示例中,实现的表单类似于“base_url + message / add”。 codeigniter版本可能会导致此错误,因为所有这些都是由2.X之前的版本编写的。无论如何,如果你想要一个现成的代码,请检查以下链接,它对我有用!

jQuery ajax codeigniter example

答案 2 :(得分:0)

同样的问题让我感到困惑。原来这是一个Apache权限问题。我检查了我的托管服务提供商,他们确认并修复了它并向我展示了如何设置一个每小时运行一次的Cron作业以重新获得适当的权限。他们还建议我使用FileZila而不是WinSCP,并为我提供了自动重置重新上载文件权限的设置。