Serializers - Les données transmises par Ajax sont une chaîne sérialisée, pourquoi PHP l'accepte-t-il comme tableau?
伊谢尔伦
伊谢尔伦 2017-05-16 13:00:09
0
4
986

Code frontal :
if(register_flag){ //Les informations d'enregistrement sont correctes

        //alert(typeof($('.register-form').serialize()));
        //序列化的结果:name=hesisi&account=15223306809&verification-code=2333&password=hss123456&confirm-pwd=hss123456
        $.ajax({
            type : 'POST',
            url : 'php/register.php',
            data : $('.register-form').serialize(),  //序列化的字符串
            success : function(data){
                //window.location.href = "index.html";
            },
            error : function(){
                //错误信息处理
                console.log();
            }

        });            

    }

code php
requiert 'config.php';


$data =$_POST;
//name=hesisi&account=15223306809&verification-code=2333&password=hss123456&confirm-pwd=hss123456
$arr = explode("&",$data);
$name_arr = explode("=",$arr[0]);
$account_arr = explode("=",$arr[1]);
$verifcode_arr = explode("=",$arr[2]);
$password_arr = explode("=",$arr[3]);
$confirmpwd_arr = explode("=",$arr[4]);

$name = $name_arr[1];
$account = $account_arr[1];
$verifcode = $verifcode_arr[1];
$password = $password_arr[1];
$confirmpwd = $confirmpwd_arr[1];

$mobile_code = $_SESSION['mobile_code'];

$query = "SELECT * from user WHERE user_account=".$account;
$result = mysqli_query($query);

if($verifcode != $mobile_code){//手机验证码错误
    exit("手机验证码错误!");
    return;
}else if($result){
    exit("改手机号已经注册!");
    return;
}else{
    $insert = "INSERT INTO user(user_name,password,user_account) VALUES(".$name.",".$password.",".$account.")";
    mysqli_query($insert);
    exit("注册成功!");
}

L'erreur signalée ici est que le deuxième paramètre de explosive() doit être de type chaîne, mais ce que j'ai utilisé est de type tableau. Les données transmises par ajax sont de type chaîne. Pourquoi PHP accepte-t-il le type tableau via $_POST[] ? data n'a jamais écrit de php auparavant, donnez-moi s'il vous plaît quelques conseils, merci ~

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(4)
给我你的怀抱

Le paramètre que vous recevez est un tableau,

$data =$_POST;
其实就是下面的数组
$data['name']='hesisi';
$data['account']='15223306809';
$data['verification-code']='2333';
...
并不是name=hesisi&account=15223306809&verification-code=2333&password=hss123456&confirm-pwd=hss123456,
你这个data就是数组,不是字符串,你不能去explode去切割
習慣沉默

ajax ajoute le paramètre Content-Type : 'text/plain'

Si php l'accepte, n'utilisez pas $_POST, remplacez-le par file_get_contents('php://input')

迷茫

Avec ajax, peu importe que les données que vous transmettez au backend soient du JSON ou une chaîne sérialisée, elles seront analysées sous forme de tableau lorsqu'elles atteindront le backend.
Alors

$data =$_POST;

//$data 就是个数组啊 
淡淡烟草味

Je souhaite visiter l'affiche originale, veuillez consulter l'adresse URL www.baidu.com?search=keyword&s=key&time=143032423

Avez-vous besoin d'utiliser $_GET lors de la réception en arrière-plan ? Il s'agit toujours d'un tableau. La clé est de savoir comment fonctionnent $_GET et $_POST

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