PHP直接调用函数和调用另外一个文件中的函数的区别

时间:2021-12-02 07:19:58
// 前台代码
function saveScreenConfig() {
    loader(" 正在保存,请稍后..."),
    saveScreenConfigList = getScreensInfo(),
    $.ajax({
        url: 'bin/setScreenConfig.php',
        type: "POST",
        timeout: null,
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(saveScreenConfigList),
        dataType: "json",
        success: function(e, t)
        {
         if(typeof e == 'object')
         {
         if(e.result == true)
         {
          lobiboxObj.info('提交成功!')
         }
         else
         {
         lobiboxObj.warn('提交失败!错误信息:'+ e.err)
         }
         }
         else
         {
         lobiboxObj.warn('提交失败!未知返回项')
         }
         removeLoader()
        },
        error: function(e, t) 
        {
         lobiboxObj.warn('提交失败!状态码:' + e.status),
         removeLoader()
        }
    })
}

//后台代码:1:  setScreenConfig.php文件
<?php
header('Content-Type: application/json');
header("Content-type:text/html;charset=utf-8");
include ("./errorlog.php");

logError('接收到视图文件!');

$screenConfigfile  = '../data/screenconfig.dat';
$postdata = $GLOBALS['HTTP_RAW_POST_DATA'];
$datalen = strlen($postdata);              //要写文件的大小长度
$writeLen = file_put_contents($screenConfigfile,$postdata);
if($datalen==$writeLen)
{
logError('写文件成功!');
$result = array('result'=>true, 'url'=>'operating_status.htm');
$jsonstring = json_encode($result);
logError($jsonstring);
  echo $jsonstring;
}
else
{
logError('写文件失败!');
$result = array('result'=>false, 'url'=>'operating_status.htm');
$jsonstring = json_encode($result);
  echo $jsonstring;
}
?>

//后台代码2:errorlog.php文件,写日志文件
<?php
header('Content-Type: application/json');
function logError($content)  
 {  
   $logfile = '../logs/log'.date('Ymd').'.txt';  
   if(!file_exists(dirname($logfile)))  
   {  
     @File_Util::mkdirr(dirname($logfile));  
   }  
   error_log(date("[Y-m-d H:i:s]")." -[".$_SERVER['REQUEST_URI']."] :".$content."\r\n", 3,$logfile);  
 }
?>

现在的问题是,我每次执行完ajax后,返回码都是200,上面的后台写法都会进入 error: function(e, t) 函数,不知道什么原因?
但是如果我把errorlog.php文件中的logError函数直接写到setScreenConfig.php中,后代代码如下
<?php
header('Content-Type: application/json');
header("Content-type:text/html;charset=utf-8");
//include ("./errorlog.php");
//header("Content-type:text/html;charset=utf-8");

function logError($content)  
 {  
   $logfile = '../logs/log'.date('Ymd').'.txt';  
   if(!file_exists(dirname($logfile)))  
   {  
     @File_Util::mkdirr(dirname($logfile));  
   }  
   error_log(date("[Y-m-d H:i:s]")." -[".$_SERVER['REQUEST_URI']."] :".$content."\r\n", 3,$logfile);  
 }

logError('接收到视图文件!');

$screenConfigfile  = '../data/screenconfig.dat';
$postdata = $GLOBALS['HTTP_RAW_POST_DATA'];
$datalen = strlen($postdata);              //要写文件的大小长度
$writeLen = file_put_contents($screenConfigfile,$postdata);
if($datalen==$writeLen)
{
logError('写文件成功!');
$result = array('result'=>true, 'url'=>'operating_status.htm');
$jsonstring = json_encode($result);
logError($jsonstring);
  echo $jsonstring;
}
else
{
logError('写文件失败!');
$result = array('result'=>false, 'url'=>'operating_status.htm');
$jsonstring = json_encode($result);
  echo $jsonstring;
}
?>
然后执行,其它都不懂,就返回正确,执行成功success: function(e, t)。
这两种写法有和区别?

7 个解决方案

#1


setScreenConfig.php和errorlog.php中都有header('Content-Type: application/json');

试下去掉其中一个

#2


按1#的方式测试了一下不成功!

#3


问题是你返回了什么内容,和日志文件里都是什么
你都没有说明!

#4


返回码 200 只表示 http 会话正确,不能说明其他任何问题

#5


分文件写和函数写到一个文件中,返回的结果都是一样的! $result = array('result'=>true, 'url'=>'operating_status.htm');只是函数分文件写时进入不到ajax的success: function(e, t)回调中,而函数写到一个文件中的方法能够进入到ajax的success: function(e, t)回调中!!!

#6


直接访问php,看看有什么输出。

你用ajax,有数据返回就是200的。

#7


include 与不用include都是可以用的。
如果说有什么不同,可以看看你的include文件内是否还有其他代码影响了。

File_Util 这个没看到有定义哦。

#1


setScreenConfig.php和errorlog.php中都有header('Content-Type: application/json');

试下去掉其中一个

#2


按1#的方式测试了一下不成功!

#3


问题是你返回了什么内容,和日志文件里都是什么
你都没有说明!

#4


返回码 200 只表示 http 会话正确,不能说明其他任何问题

#5


分文件写和函数写到一个文件中,返回的结果都是一样的! $result = array('result'=>true, 'url'=>'operating_status.htm');只是函数分文件写时进入不到ajax的success: function(e, t)回调中,而函数写到一个文件中的方法能够进入到ajax的success: function(e, t)回调中!!!

#6


直接访问php,看看有什么输出。

你用ajax,有数据返回就是200的。

#7


include 与不用include都是可以用的。
如果说有什么不同,可以看看你的include文件内是否还有其他代码影响了。

File_Util 这个没看到有定义哦。