【发布时间】:2017-10-19 12:30:26
【问题描述】:
我知道这已经讨论过很多次了,但我认为这是不同的情况。
我正在对 php 方法进行简单的 ajax 调用,如下所示:
public function updateAbout()
{
log_message('debug', "updateAbout is called", false);
log_message('debug',$this->input->post('fname'), false);
log_message('debug', "updateAbout success", false);
}
在这种方法中,我只是试图获取通过 ajax 调用传递的数据。
但我没有得到 ajax 调用发布的数据,而是得到 2 个错误:
Severity: Warning --> session_start(): Cannot send session cache limiter - headers already sent ...\..\\libraries\Session\Session.php 143
Severity: Warning --> Cannot modify header information - headers already sent ..\..\libraries\Session\Session.php 171
注意:
我没有在我的项目中的任何地方使用session_start()。
此错误指向 CodeIgniter 库的 Session.php 文件中的 session_start() 方法。它没有指向我的代码中的任何地方,所以我不确定在哪里寻找问题。
我已经在整个互联网上检查了答案,但似乎都没有解决这个问题。
为什么会出现此错误,我该如何预防?
编辑:
根据其他答案中的建议,我已在所有代码中检查并删除了 <?php ?> 中的空格。
这是我进行 ajx 调用的 JavaScript 代码。
$("#btnupdateAbout").click(function(){
$fname=$("#updatefname").val();
$lname=$("#updatelname").val();
$country=$("#updatecountry").val();
$locality=$("#updatelocality").val();
if($('#optradioMale').is(':checked')) { $gender="Male"; }
else{$gender="Female";}
$.ajax({
url:"http://localhost/Voyager/ProfileControls/updateAbout",
data:{'fname':$fname,'lname':$lname,'country':$country,'locality':$locality,'gender':$gender},
method:"POST",
contentType:false,
cache:false,
processData:false,
success:function(){
}
});
});
【问题讨论】:
-
如果文件中有关闭 PHP 标记,请先删除这些标记。
-
@Tpojka 你的意思是在视图或控制器中??在控制器中,我没有关闭 php 标记。看来,我必须要不然它会报错。
-
对。在控制器和其他普通 PHP 文件中。还要检查并确保您的工作文件保存为没有 BOM 的 UTF-8。
-
如何检查没有 BOM 的 utf-8?
-
为什么它没有指向我的代码中的确切位置?如何在包含数百个 php 文件的项目中找到它。这一切都运行良好,直到我添加了一个模态和 ajax 调用.. 现在即使在删除这部分代码之后,这个错误也会出现。 :(
标签: php ajax codeigniter session