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的。
你用ajax,有数据返回就是200的。
#7
include 与不用include都是可以用的。
如果说有什么不同,可以看看你的include文件内是否还有其他代码影响了。
File_Util 这个没看到有定义哦。
如果说有什么不同,可以看看你的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的。
你用ajax,有数据返回就是200的。
#7
include 与不用include都是可以用的。
如果说有什么不同,可以看看你的include文件内是否还有其他代码影响了。
File_Util 这个没看到有定义哦。
如果说有什么不同,可以看看你的include文件内是否还有其他代码影响了。
File_Util 这个没看到有定义哦。