jqueryAjax程序对PHP程序返回的字符串进行切分就总是出问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了jqueryAjax程序对PHP程序返回的字符串进行切分就总是出问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3980字,纯文字阅读大概需要6分钟。
内容图文
![jqueryAjax程序对PHP程序返回的字符串进行切分就总是出问题](/upload/InfoBanner/zyjiaocheng/196/d1da5064974e4c618e46d58ef29e1869.jpg)
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('
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('');},
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])去空格
不是啊,确实没有空格,我想了很多办法,比如用trim函数去空格,或者用intval转换为整形都没用。我的文件是gb2312编码,前面有header("Content-type: text/html; charset=gb2312"); ,
我就是简单地把ASP程序的rs改成php的$row就不行了
我觉得应该是下面这篇文章中描述的问题所致:
Ajax的返回值中有回车(也叫换行符)解决办法
http://www.111cn.net/wy/js-ajax/39612.htm
我按照文章中的方法,结果用alert输出时,firefox中没有换行了,但ie6还是有,而且两种浏览器都不能正常运行
if(r[0] == "yt" ) 判断结果总是为false
但r[0]明明是yt啊,数据类型也是string,脑袋都块想破了
echo base64_encode(file_get_contents('http://localhoust/service.php?id=3'));
贴出结果
版主,结果是:
DQoNCjM4
我如果直接在浏览器中运行该链接,结果是37,但上面空了两行 ,37是$row['dig']的值
$s = 'DQoNCjM4';$s = base64_decode($s);echo bin2hex($s);得到返回值的十六进制内码:0d0a0d0a3338
其中:
0d 回车符
0a 换行符
这表示你的程序在 之外有两个空行
可能在本文件也可能在嵌入的文件中
哦,是的,我包含的conn.php文件的下面有两个空行,我以前只注意上面没空行,没注意下面的空行了。删除之后一切正常了, if(r[0] == "yt" ) 为true了,
还有,4楼中讲的那种去空行的方法其实也没用。
所以你可以省略程序文件最后的 ?>,就不会有多处的空行了
用js删除空行要这样
data.replace(/[\r\n]+/g,"")
内容总结
以上是互联网集市为您收集整理的jqueryAjax程序对PHP程序返回的字符串进行切分就总是出问题全部内容,希望文章能够帮你解决jqueryAjax程序对PHP程序返回的字符串进行切分就总是出问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。