我有这个ajax请求:
include 'functions.php';
require_once 'BusinessLogic/Manager.php';
use BusinessLogic\Manager;
sec_session_start();
if(isset($_POST['name'])){
Manager::contactInsertBoats($_POST['name'],$_POST['email'],$_POST['phone']);
$arrResult = array ('response'=>true);
echo json_encode($arrResult);
}else{
$arrResult = array ('response'=>false);
echo json_encode($arrResult);
}
在“contactUsInsertBoat.php”中我这样做:
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
var json_obj=JSON.parse(data);
但在那之后我做了这个firebug控制台写道:
<br />
<b>Strict Standards</b>: Non-static method BusinessLogic\Manager::sendMail() should not be called statically in <b>/var/www/public/BusinessLogic/Manager.php</b> on line <b>1957</b><br />
{"response":true}
,JSON的内容是:
{{1}}
为什么要将严格的标准日志添加到JSON对象?
答案 0 :(得分:2)
因为您将错误报告设置为E_ALL并将display_errors设置为“On”或1,这会将所有错误(包括E_STRICT)显示到输出
http://php.net/manual/ro/function.error-reporting.php
最佳做法是记录所有但禁止发送错误以从php.ini输出:
display_errors = Off
这是之前给出的回应: Stop printing php error messages to browser
答案 1 :(得分:2)
方法contactInsertBoats
不是类Manager
中的静态方法。因此,您需要创建Manager
的实例,然后调用该方法。
请在PHP代码中进行简单的更改:
include 'functions.php';
require_once 'BusinessLogic/Manager.php';
use BusinessLogic\Manager;
sec_session_start();
if(isset($_POST['name'])){
$manager = new Manager;
$manager->contactInsertBoats($_POST['name'],$_POST['email'],$_POST['phone']);
$arrResult = array ('response'=>true);
echo json_encode($arrResult);
}else{
$arrResult = array ('response'=>false);
echo json_encode($arrResult);
}
但是,您可以设置error_reporting(0);在PHP文件的开头,以防止显示通知/警告/错误/...