Maison  >  Questions et réponses  >  le corps du texte

serializers - ajax传递过去的data是一个序列化的字符串,为什么php接受过去确实一个数组?

前端代码:
if(register_flag){ //注册信息都正确

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

        });            

    }

php代码
require '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("注册成功!");
}

这里报错说,explode()第二个参数应该是string类型,但是我穿的是数组类型。ajax传过去的data是string类型啊,为什么php通过$_POST[]接受就是array类型了?data之前没写过php,请指教,谢谢~

伊谢尔伦伊谢尔伦2686 Il y a quelques jours923

répondre à tous(4)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:02:09

    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去切割
    

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:02:09

    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')

    répondre
    0
  • 迷茫

    迷茫2017-05-16 13:02:09

    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 就是个数组啊 

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:02:09

    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

    .

    répondre
    0
  • Annulerrépondre