首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

jquery Ajax程序对PHP程序返回的字符串进行切分就总是出有关问题

2013-07-16 
jquery Ajax程序对PHP程序返回的字符串进行切分就总是出问题比如PHP程序 输出一个echo yt|.$row[dig]

jquery Ajax程序对PHP程序返回的字符串进行切分就总是出问题
比如PHP程序 输出一个

echo 'yt|'.$row["dig"];

Ajax程序对其进行切分:
function Dig(id) {  //当单击投一票链接时
var content = document.getElementById("dig"+id);    //获取显示“投一票”的元素
  //获取显示票数的元素,其id属性值为一个数字,类似id="3"
var dig = document.getElementById(id);
$.ajax({
 type: "get",
 url: "service.php",
 data: {id:id,n:Math.random()},   //发送记录id给service.asp
  beforeSend:function(){$(dig).html('<img src="images/Loading.gif">');}, 
success: function(data){  //处理返回的数据
r=data.split("|");
alert(r[0]);
 if(r[0] == "yt" ) {  //已经投过票的情况
                $(content).html("您已经投过票了!");
                $(dig).html(r[1]);  //显示原来的票数
                    }
             else if(data == "NoData")//没有找到记录
{alert("参数错误!");}
  else{
$(dig).html(data); //服务器修改成功,更新票数
$(content).html("投票成功");//将投一票改成投票成功
setTimeout("rightinfo("+id+")",3000);//3秒后调用rightinfo(id)
                    }}}); }
就总是切分不出来,
经测试,问题在于r[0] == "yt" 返回的是false。但用alert(r[0]);输出结果是yt,但yt上面好像还有一空行。
以前用ASP程序输出就根本不存在这样的问题,以前是:
Response.Write("yt"&","&rs("Dig"))
这个问题网上也查不到,请问是什么原因啊

[解决办法]
1、确认你的php文件前面没有空行
2、如果你的文件是utf-8编码,确认无bom头
[解决办法]

引用:
比如PHP程序 输出一个

echo 'yt
[解决办法]
'.$row["dig"];

Ajax程序对其进行切分:
function Dig(id) {  //当单击投一票链接时
var content = document.getElementById("dig"+id);    //获取显示“投一票”的元素


  //获取显示票数的元素,其id属性值为一个数字,类似id="3"
var dig = document.getElementById(id);
$.ajax({
 type: "get",
 url: "service.php",
 data: {id:id,n:Math.random()},   //发送记录id给service.asp
  beforeSend:function(){$(dig).html('<img src="images/Loading.gif">');}, 
success: function(data){  //处理返回的数据
r=data.split("
[解决办法]
");
alert(r[0]);
 if(r[0] == "yt" ) {  //已经投过票的情况
                $(content).html("您已经投过票了!");
                $(dig).html(r[1]);  //显示原来的票数
                    }
             else if(data == "NoData")//没有找到记录
{alert("参数错误!");}
  else{
$(dig).html(data); //服务器修改成功,更新票数
$(content).html("投票成功");//将投一票改成投票成功
setTimeout("rightinfo("+id+")",3000);//3秒后调用rightinfo(id)
                    }}}); }
就总是切分不出来,
经测试,问题在于r[0] == "yt" 返回的是false。但用alert(r[0]);输出结果是yt,但yt上面好像还有一空行。
以前用ASP程序输出就根本不存在这样的问题,以前是:
Response.Write("yt"&","&rs("Dig"))
这个问题网上也查不到,请问是什么原因啊


先对返回的值去掉前后空格
trim(data),当然也可以对trim(r[0])去空格
[解决办法]
echo base64_encode(file_get_contents('http://localhoust/service.php?id=3'));
贴出结果
[解决办法]
$s = 'DQoNCjM4';
$s = base64_decode($s);
echo bin2hex($s);
得到返回值的十六进制内码:0d0a0d0a3338
其中:
0d 回车符
0a 换行符

这表示你的程序在 <?php ?> 之外有两个空行
可能在本文件也可能在嵌入的文件中

[解决办法]
所以你可以省略程序文件最后的 ?>,就不会有多处的空行了
用js删除空行要这样
data.replace(/[\r\n]+/g,"")

热点排行