前台用的是html5,后台用的是php,使用ajax作为前后台交互的接口,数据库使用的是mysql,我想问的是,比如,我有一个列表写的是从从数据库提取的数据信息,现在我需要对数据进行增加。删除、修改的操作,我的问题就是:怎样在页面上修改数据,并且把修改好的数据在页面中显示,并且也改变了数据库中的数据
修改数据要将你的列表变成表单才可进行编辑,首先获取表单中的数据,通过ajax传送数据到php进行修改,在页面中显示的数据其实是从数据库中获取的,数据库变了,获取的内容自然就变了,这就是动态页面,因此,还需要一个php从后台获取页面
1.从数据库中获取内容,如果html页面直接获取的话需要引擎编译,这里是直接创建的表格,js代码
//通过ajax取数据 ajax({ url:"select.php", dataType:"json", success:function(e){ var str=""; for(var i=0;i<e.length;i++){ str+="<tr id="+e[i].id +">"; str+="<td class='name'>"+e[i].name+"</td>"; str+="<td class='age'>"+e[i].age+"</td>"; str+="<td class='sex'>"+e[i].sex+"</td>"; str+="<td class='aa'><span class='del'>删除</span></td>"; str+="</tr>"; console.log(e) } tbody.innerHTML=str; } })
select.php
<?php $db=new mysqli("localhost","root","","student"); //使用自己的数据库 $db->query("set names utf8"); //固定,设置编码形式 $sql="select * from xinxi"; //查找表 $result=$db->query($sql);//组合语句 while($row=$result->fetch_assoc()){ //循环获取表的信息 // var_dump("<pre>"); $array[]=($row); } echo json_encode($array);//输出的信息就是ajax success返回的信息e // $arr=array(); // $arr[]=1; //php中数组小标自动累加 // // json_encode() //输出类似js中json格式的代码 ?>
2.页面修改数据 js代码
tbody.onclick=function(e){ var ev=e||window.event; var targetObj=ev.target||ev.srcElement; //编辑功能 if(targetObj.nodeName="TD"&&targetObj.className!="aa"){ //选择对应的td元素 var value=targetObj.innerText; targetObj.innerHTML="" var input=$("<input>") //自己建一个表单对象,用来修改 input.type="text"; input.value=value; targetObj.appendChild(input); input.focus(); input.onblur=function(){ //表单失去焦点事件 var val=this.value; if(val==""||val==value){ targetObj.innerHTML=value; }else{ var ziduan=targetObj.className; var id=targetObj.parentNode.id; ajax({ url:"ajax.php", data:{id:id,type:ziduan,value:val}, //传输对应的修改内容字段 success:function(text){ if(text==1){//php中输出的是影响行数,修改成功后影响行数为1 targetObj.innerHTML=val; //编辑成功,将表单中的值赋值给页面表格内容 }else{ alert("编辑失败") } } }) } } } }
ajax.php
<?php $db=new mysqli("localhost","root","","student"); $db->query("set names utf8"); $id=$_GET["id"]; //获取ajax传的数据 $ziduan=$_GET["type"]; $value=$_GET["value"]; $sql="update xinxi set {$ziduan}='{$value}' where id=".$id;//前面字段不加引号 $result=$db->query($sql); //返回操作的行数 echo $db->affected_rows; ?>
用jsonp
直接ajax就可以了呀