serializers - ajax传递过去的data是一个序列化的字符串,为什么php接受过去确实一个数组?
伊谢尔伦
伊谢尔伦 2017-05-16 13:00:09
0
4
962

前端代码:
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,请指教,谢谢~

伊谢尔伦
伊谢尔伦

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

全員に返信(4)
给我你的怀抱

受け取るパラメータは配列です。

リーリー
いいねを押す +0
習慣沉默

ajax はパラメーター Content-Type: 'text/plain' を追加します

PHP がそれを受け入れる場合は、$_POST を使用せず、file_get_contents('php://input') に変更してください

いいねを押す +0
迷茫

ajax では、バックエンドに渡すデータが json であってもシリアル化された文字列であっても、バックエンドに到達すると配列形式に解析されます。
それで

リーリー
いいねを押す +0
淡淡烟草味

元のポスターにアクセスしたい場合は、URL アドレス www.baidu.com?search=keyword&s=key&time=143032423 をご覧ください

バックグラウンドで受信するときに $_GET を使用する必要がありますか? 重要なのは、$_GET と $_POST がどのように機能するかです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!