Php正在向ajax请求响应添加错误/通知日志

时间:2016-05-18 16:31:48

标签: php jquery ajax

我有这个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对象?

2 个答案:

答案 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文件的开头,以防止显示通知/警告/错误/...