首頁  >  問答  >  主體

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,請指教,謝謝~

伊谢尔伦伊谢尔伦2736 天前967

全部回覆(4)我來回復

  • 给我你的怀抱

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

    你接收的參數就是一個數組,

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

    回覆
    0
  • 習慣沉默

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

    ajax加上參數Content-Type: 'text/plain'

    php接受不要用$_POST,改成file_get_contents('php://input')

    回覆
    0
  • 迷茫

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

    ajax 的話 不管你傳到後端的資料 是 json 還是 序列化的字串 到了後端都會被解析成陣列形式。
    所以

    $data =$_POST;
    
    //$data 就是个数组啊 

    回覆
    0
  • 淡淡烟草味

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

    我想訪問樓主一句,你看url地址 www.baidu.com?search=關鍵字&s=key&time=143032423

    你後台接收的時候是不是要用$_GET 那還是個數組啊,關鍵就是$_GET 和 $_POST它們是怎麼工作的

    回覆
    0
  • 取消回覆