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

发布于 2022-09-04 22:01:18 字数 1904 浏览 18 评论 0

前端代码:
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("注册成功!");
}

clipboard.png

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

寄居人 2022-09-11 22:01:18

你接收的参数就是一个数组,

$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去切割
世俗缘 2022-09-11 22:01:18

ajax加参数Content-Type: 'text/plain'

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

残疾 2022-09-11 22:01:18

ajax 的话 不管你传到后端的数据 是 json 还是 序列化的字符串 到了后端都会被解析成数组形式。
所以

$data =$_POST;

//$data 就是个数组啊 
你的背包 2022-09-11 22:01:18

我想访问楼主一句,你看url地址 www.baidu.com?search=关键字&s=key&time=143032423

你后台接收的时候是不是要用$_GET 那还是个数组啊,关键就是$_GET 和 $_POST它们是怎么工作的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文