前端代码:
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,请指教,谢谢~
習慣沉默2017-05-16 13:02:09
ajax는 매개변수 Content-Type: 'text/plain'을 추가합니다
php에서 허용하면 $_POST를 사용하지 말고 file_get_contents('php://input')로 변경하세요
迷茫2017-05-16 13:02:09
Ajax를 사용하면 백엔드에 전달하는 데이터가 json이든 직렬화된 문자열이든 상관없이 백엔드에 도달하면 배열 형식으로 구문 분석됩니다.
그래서
淡淡烟草味2017-05-16 13:02:09
원본 포스터를 확인하고 싶다면 URL 주소 www.baidu.com?search=keyword&s=key&time=143032423을 확인해주세요
백그라운드에서 수신할 때 $_GET을 사용해야 하나요? 중요한 것은 $_GET 및 $_POST 작동 방식입니다.