在Ajax中将数组转换成字符串(0517-am)

时间:2023-03-09 04:13:56
在Ajax中将数组转换成字符串(0517-am)

一、如何在Ajax中将数组转换成字符串

1. 主页面;

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ajax查表格</title>
<script src="../jquery-1.11.2.min.js">
</script>
</head> <body> <div><input type="button" value="显示数据" id="bst"></div>
<table id="xianshi" border="1" cellpadding="0" cellspacing="0" width="100%"> </table> </body>
<script type="text/javascript">
$(document).ready(function(e) { $("#bst").click(function(){
$.ajax({
url:"ChuLi.php",
dataType:"TEXT",
success: function(data){ var str="<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td></tr>"; var hang=data.split("|"); //拆分每一行的字符串,隔开行
for(var i=0;i<hang.length;i++)
{
var lie=hang[i].split("^"); //输出方法一:
/*str+="<tr><td>"+lie[0]+"</td><td>"+lie[1]+"</td><td>"+lie[2]+"</td><td>"+lie[3]+"</td><td>"+lie[4]+"</td></tr>"; //str+= 拼接字符串*/ //输出方法二:再套一个循环
str+="<tr>";
for(var j=0;j<lie.length;j++)
{
str+="<td>"+lie[j]+"</td>";
}
str+="</tr>"; $("#xianshi").html(str); } } }); }) }); </script>
</html>

  

2. 处理页面:

<?php
include ("../DBDA.class.php");
$db=new DBDA();
$sql="select * from info"; //方法一:普通方法直接写:
//$attr=$db->Query($sql);//返回的是数组,要转换成字符串 //因为要以表格返回的是字符串形式,所以需要拆分字符串
//拆分成这样的形式: "p001^张三|p002^李四|p003^王五"; /*$str="";
foreach ($attr as $v)
{
$str=$str.implode("^",$v); //将每列数据拼接成字符串
$str=$str."|";//拼接每行
}*/
//sunstr:截取字符串,获取从字符串s中的第n个位置开始长度为len的字符串
//$str=substr($str,0,strlen($str)-1);//这一步是为了去掉末尾的“|”符号
//echo $str; //方法二:使用DBDA中封装的方法
echo $db->StrQuery($sql);

  

3. 运行结果显示:

在Ajax中将数组转换成字符串(0517-am)

附1:将Ajax 中数组转换成字符串 封装成类

//Ajax调用返回字符串
public function StrQuery($sql,$type=1,$db="mydb")
{
//造连接对象
$conn = new MySQLi($this->host,$this->uid,$this->password,$db); //判断连接是否成功
!mysqli_connect_error() or die("连接失败!"); //执行SQL语句
$result = $conn->query($sql); //判断SQL语句类型
if($type==1)
{
$attr = $result->fetch_all();
$str = "";
//如果是查询语句返回字符串
for($i=0;$i<count($attr);$i++)
{
for($j=0;$j<count($attr[$i]);$j++)
{
$str = $str.$attr[$i][$j];
$str = $str."^";
}
$str = substr($str,0,strlen($str)-1);
$str = $str."|";
}
$str = substr($str,0,strlen($str)-1); return $str;
}
else
{
//如果是其他语句,返回true或false
if($result)
{
return "OK";
}
else
{
return "NO";
}
}
}

  

附2:在统计函数(count)中,使用StrQuery($sql)比较方便,直接返回字符串

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<?php include("../DBDA.php");
$db = new DBDA(); $sql = "select count(*) from Users where Uid = 'lisi'"; //$arr = $db->Query($sql); //echo $arr[0][0]; $attr = $db->StrQuery($sql); echo $attr; ?>

  返回结果为1.

二、对表格进行进一步操作,增加删除

1.主页面

 <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ajax查表格</title>
<script src="../jquery-1.11.2.min.js">
</script>
<style>
.sc
{
width:60px;
height:25px;
background-color:#09F;
color:#FFF;
text-align:center;
line-height:25px;
vertical-align:middle; }
.sc:hover
{
cursor:pointer;
background-color:#FF6B24;
}
</style>
</head> <body> <div><input type="button" value="显示数据" id="bst"></div><br />
<table id="xianshi" border="1" cellpadding="0" cellspacing="0" width="100%"> </table> </body>
<script type="text/javascript"> $("#bst").click(function(){ ShowAll();
BindCK();
}) //点击删除
function BindCK()
{ $(".sc").click(function(){
//根据属性找到删除数据的主键值
var code=$(this).attr("bs");
$.ajax({
url:"Delete.php",
data:{code:code},
type:"POST",
dataType:"TEXT",
success: function(data){
//trim()去除空格
if(data.trim()=="OK")
{
//删除成功后显示删除后的表格信息(在不刷新页面的情况下)
ShowAll();
BindCK();
}
else
{
alert ("删除失败!");
}
}
});
})
} //显示数据表格
function ShowAll(){ $.ajax({
async:false,
url:"ChuLi.php",
dataType:"TEXT",
success: function(data){ var str="<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td><td>操作</td></tr>"; var hang=data.split("|"); //拆分每一行的字符串,隔开行
for(var i=0;i<hang.length;i++)
{
var lie=hang[i].split("^"); str+="<tr>";
for(var j=0;j<lie.length;j++)
{
str+="<td>"+lie[j]+"</td>";
}
//要删除数据要有对应的主键值,自定义属性“bs”,使其为主键值。可再设置div的样式
str+="<td><div class='sc' bs='"+lie[0]+"'>删除</div></td>";
str+="</tr>"; }
$("#xianshi").html(str);
} });
}
</script>
</html>

2.处理页面

 <?php
$code=$_POST["code"];
include ("../DBDA.class.php");
$db=new DBDA();
$sql="delete from Info where code='{$code}'";
$r=$db->Query($sql,1);//1为增删改;0为查询
if($r)
{
echo "OK";
}
else
{
echo "NO";
}

3.显示 运行结果:

在Ajax中将数组转换成字符串(0517-am)