一、php中ajax请求无法获得返回值
最近遇到一个棘手的问题,就是在一个php页面上进行ajax提交时,success方法没执行,拿不到返回值。
页面中代码如下:
$.ajax({
async : false,
type : 'post',
dataType : 'json',
url : '/ajax.php',
data : {
'path' : path,
's_username':$("#s_yhmc").val(),
'myid':'<?=$myUser['id'] ?>',
'pno' : pno,
'index':index
},
success : function(data) {
*********************
}
ajax.php中的代码:
$path=$_POST['path'];
$myid=$_POST['myid'];
$pno=$_POST['pno'];
$index=$_POST['index'];
$sql='******************************';
$query = $_SGLOBAL['db']->query($sql);
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
$list[] = $value;
}
echo json_encode($list);
以上代码在本地测试,ie8 firefox都没有问题;但是将代码上传至服务器时,success方法不执行 没有返回值
处理方法:将json改为text,在success中处理data(var data1=eval('(' + data + ')');)
产生这个问题的原因:可能是json_encode方法在不同版本的PHP里的有可能不支持,在处理json数据时出问题了。
处理方法里的意思就是返回的是字符串,在js里处理成json数据类型,然后再操作。
二 页面头部出现回车空格解决方案
问题描述:在本地访问页面没有这个问题,但是在服务器上访问时,在页面的顶部出现回车空格,用firefox查看代码,发现<head></head>标签里的内容出现在<body></body>里。
问题分析:经过网上类似问题的查找,发现原因-----页面文件的格式问题 utf-8 BOM 和NO-BOM区别
解决方法:将文件格式设置为utf-8 NO-BOM,可以使用ultraedit编辑器另存为完成。
以上2个问题本人是第一次遇到,也感觉到莫名其妙,花了10多个小时才解决,因为牵扯到项目里的用户模块,问题比较棘手,希望对大家有帮助!
学无止尽,诶!