javascript - Ajoutez plusieurs éléments de données organisés dans un objet et transmettez-les à php. Comment php reçoit-il les paramètres, les analyse-t-il en données normales et les insère-t-il dans le tableau?
阿神
阿神 2017-05-16 12:59:35
0
7
555

J'ai créé un tableau pour ajouter, supprimer, modifier et interroger. Il y a de nombreuses nouvelles données que j'utilise maintenant dans l'URL. Transmettez-le à php sous la forme de paramètres ajoutés, puis php utilise $_GET[''] pour recevoir les paramètres transmis. C'est une façon d'ajouter de nouvelles données. Ce que je veux demander, c'est, s'il y a beaucoup de nouvelles données, comment PHP reçoit-il les paramètres passés par l'analyse ?
Voici mon code ?
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);
                    }
                });
            }

Vous ne comprenez peut-être pas ce qui est écrit ci-dessus. Ce que je veux exprimer, c'est que si le code PHP reste inchangé, tout ce qui change, c'est la nouvelle organisation des données dans cette méthode de JS s'il y a plusieurs éléments de données. qui doivent être mis à jour. À propos, j'ai organisé ces multiples éléments de données en un objet, j'ai analysé l'objet en une chaîne et je l'ai transmis à php. Alors, comment ce php analyse-t-il les données ?

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);
                    }
                });
            }

S'il vous plaît, donnez-moi quelques réponses, merci beaucoup !

阿神
阿神

闭关修行中......

répondre à tous(7)
黄舟

Pour les nouvelles opérations, utilisez la méthode POST. Ajax envoie les données json(data:{a:'',b:'',c:''}), et après que php les ait reçues, jsondecode($_POST['data'] )

phpcn_u1582

Mettez tous les paramètres dans un numéro json et passez-le en arrière-plan : {'username': xxx, 'age': xxx}, selon les commentaires et la logique de votre code, ces codes doivent être écrits avec succès plutôt qu'avec erreur

Ty80

Je ne comprends pas ce que vous dites. Ajax le renvoie directement après l'avoir reçu, et votre valeur par défaut est dataType:'json', ce qui signifie que tant que les données renvoyées en php ne sont pas au format json, une erreur sera signalé. Jetez un œil à ce qui précède //echo "Ajouter avec succès!"; Cela vous amènera directement à signaler une erreur ajax.

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

Les conditions de succès sont (xmlHttp.readyState == 4) && (xmlHttp.status == 200)
Voyez si le code d'état renvoyé par l'adresse que vous avez demandée est 200 ?

S'il y a beaucoup de paramètres, vous pouvez directement affecter $_GET à une variable, car $_GET est un tableau.

我想大声告诉你

Recevez le tableau $_GET puis parcourez

为情所困

Utilisez POST

漂亮男人

1. La méthode de soumission ajax est teyp : "post", mais le paramètre reçu par php est $_GET
2 Le format de données reçu par ajax est dataType : 'json', mais le résultat renvoyé par php est du texte.
3.Ajax demande le format de contenu contentType:'application/json;charset=utf-8', les données demandées doivent être une chaîne json si vous utilisez php pour les recevoir en arrière-plan, vous pouvez utiliser $data = file_get_contents(" php://input "); json_decode($data, true), qui est le paramètre de requête. (Quatre types de contenu courants dans HttpRequest (transfer))
4.sql doit être protégé contre l'injection

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal