消息关闭
    暂无新消息!

做了个增删改查的表,新增的数据有多条,我现在都是在URL中以 ? 后加参数的形式传给php,然后,php用$_GET['']接收传过来的参数。这是可以实现新增数据的方法,我想问的是,如果新增数据特别多的情况下,php怎么接收解析传过来的参数呢?
下面是我的代码?
php:

//新增方法
    function add_row(){
        /*获取从客户端传过来的数据*/
        $userName = $_GET['user_name'];
        $userAge = $_GET['user_age'];
        $userSex = $_GET['user_sex'];
        
        $sql = "INSERT INTO t_users (user_name,user_age,user_sex) VALUES ('$userName','$userAge','$userSex')";
        if(query_sql($sql)){
            echo "ok!";
        }else{
            echo "新增成功!";
        }
    }

    function query_sql(){
        $mysqli = new mysqli("127.0.0.1", "root", "root", "crud");
        $sqls = func_get_args();
        foreach($sqls as $s){
            $query = $mysqli->query($s);
        }
        $mysqli->close();
        return $query;
    }

js:

$(function() {
                
    $('#save').click(function(){
        addData();
    });
});
function addData(){
    var userName = $('#userName').val();
    var userAge = $("#userAge").val();
    var userSex = $('#user-sex').val() == '0' ? '男' : '女';
                
    var addUrl = "./php/data.php?action=add_row&user_name=" + userName + "&user_age=" + userAge + "&user_sex=" + userSex;
                
                $.ajax({
                    type:"post",
                    url:addUrl,
                    dataType:'json',
                    contentType:'application/json;charset=utf-8',
                    success:function(data){
                        console.log("success");
                    },
                    error:function(data){
                        console.log("data");
                        //添加成功后隐蒧modal框并重新加载页面
                        setTimeout(function(){
                            $('#exampleModal').modal('hide');
                        },500);
                        setTimeout(function(){
                            //新增成功后,重新加载数据
                            searchData();
                        },700);
                    }
                });
            }

上面写的可能不太明白,我想要表达的意思是,如果php的代码不变,变的仅是js新增这个方法中的数据组织,如果有多条数据需要新增,我把这多条数据组织为一个对象并把这个对象给解析为一个字符串传给php。那么这个php如何解析数据呢?

function addData(){
                var userName = $('#userName').val();
                var userAge = $("#userAge").val();
                var userSex = $('#user-sex').val() == '0' ? '男' : '女';
                
                /*var addUrl = "./php/data.php?action=add_row&user_name=" + userName + "&user_age=" + userAge + "&user_sex=" + userSex;*/
                var addUrl = "./php/data.php?action=add_row";
                var addData = {
                    'user_name':userName,
                    'user_age':userAge,
                    'user_sex':userSex
                };
                
                var jsonData = JSON.stringify(addData);
                
                $.ajax({
                    type:"post",
                    url:addUrl,
                    data:jsonData,//传给php
                    dataType:'json',
                    contentType:'application/json;charset=utf-8',
                    success:function(data){
                        console.log("success");
                    },
                    error:function(data){
                        console.log("data");
                        //添加成功后隐蒧modal框并重新加载页面
                        setTimeout(function(){
                            $('#exampleModal').modal('hide');
                        },500);
                        setTimeout(function(){
                            searchData();
                        },700);
                    }
                });
            }

求大侠解答一下,非常感谢!


7个回答

︿ 0

新增操作做好用POST方法,ajax发送json(data:{a:'',b:'',c:''})数据,php接收到后 jsondecode($_POST['data'])

︿ 0

将所有的参数放在一个json数字里面传递到后台:{'username': xxx, 'age': xxx},按照你代码的注释和逻辑那些代码应该写在success里面而不是error里面

︿ 0

success的条件是 (xmlHttp.readyState == 4) && (xmlHttp.status == 200)
你看看你请求的地址返回的状态码是200吗?

如果参数很多的话你可以直接将$_GET赋值给一个变量就行了,因为$_GET就是一个数组。

︿ 0

我听不懂你说什么,ajax接收完,就直接返回了,而你默认是dataType:'json',也就是说php里面返回的只要不是json格式的数据,就会报错。你自己看下你上面 //echo "新增成功!";这个就直接让你ajax报错了。

 if(query_sql($sql)){
            //echo "ok!";
            $r['code']=0;
            $r['msg']='ok!';
        }else{
            //echo "新增成功!";
            $r['code']=1;
            $r['msg']='新增成功!';
        }
        exit(json_encode($r));
︿ 0

1.ajax提交方式是用teyp:"post",但php接收的参数是$_GET
2.ajax接收的数据格式dataType:'json',但php返回的结果是text。
3.ajax的请求内容格式contentType:'application/json;charset=utf-8',请求的数据应当为json字符串,后台如果用php接收,可以用 $data = file_get_contents("php://input"); json_decode($data, true),即为请求参数.(HttpRequest中常见的四种ContentType(转))
4.sql要做防注入处理