2

我正在使用 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
  } 

ETC...

在 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.

但是,这个函数确实存在,当我简单地将链接粘贴到 URL 行时就很明显了。

我很困惑...

编辑:根据@paul 的建设性评论,我已将请求更改为 GET,并且确实找到了该页面。什么会导致这种晦涩难懂的行为?

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

4

3 回答 3

2

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

于 2012-10-16T20:48:51.307 回答
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 代码点火器示例

于 2013-06-05T21:06:38.220 回答
0

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

于 2016-07-04T03:49:53.473 回答