首页 新闻 会员 周边

前后台怎样进行数据交互

0
[待解决问题]

前台用的是html5,后台用的是php,使用ajax作为前后台交互的接口,数据库使用的是mysql,我想问的是,比如,我有一个列表写的是从从数据库提取的数据信息,现在我需要对数据进行增加。删除、修改的操作,我的问题就是:怎样在页面上修改数据,并且把修改好的数据在页面中显示,并且也改变了数据库中的数据

雨後的彩虹的主页 雨後的彩虹 | 菜鸟二级 | 园豆:202
提问于:2017-04-20 21:23
< >
分享
所有回答(3)
0

修改数据要将你的列表变成表单才可进行编辑,首先获取表单中的数据,通过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;
?>
不会起名 | 园豆:217 (菜鸟二级) | 2017-04-21 11:47
0

用jsonp

狼爷 | 园豆:1204 (小虾三级) | 2017-04-21 18:00
0

直接ajax就可以了呀

Bluto | 园豆:317 (菜鸟二级) | 2017-04-21 21:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册