为什么我无法使用 alamofire 从 php 中的这个脚本中获取 json?

问题描述

我写了这个脚本来让用户PHP登录,以便将数据保存到服务器,如果用户已经创建,脚本应该返回一个带有 true 或 false 的简单 json。

<?PHP

require "../private/autoload.PHP";
header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    print_r($_POST);
    $Error = "";

    $staff = $_POST['staff_ID'];
    $email = $_POST['email'];
    $pass = $_POST['password'];
    $name = $_POST['Name'];
    $cpt = $_POST['isCPT'];
    $date = date("Y-m-d H:i:s",time()); // date of creation
    // check if user alrady exixt
    $sqlexixst = "SELECT * FROM `users` WHERE staff_ID = ?";
    $st = $pdo->prepare($sqlexixst);
    $st->execute(array($staff));

    $result = $st->fetchAll();
    if (count($result) > 0){
    
        $array = array(
            "user_created"=>false
        );

        $js = json_encode($array);
        echo $js;

    } else {
        // user not exixt creo utente
        $regex = '/^[^0-9][_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
        if (preg_match($regex,$email)){
            
            // ok email

            if (is_numeric($staff)){
                // ok id

                $sql = "INSERT INTO users (staff_ID,password,email,isCPT,Name,date) VALUES (?,?,?)";

                $statement = $pdo->prepare($sql);

                $statement ->execute([$staff,$pass,$email,$cpt,$name,$date]);

                $array = array(
                 "user_created"=>true,"staff_ID"=>$staff
                   );
                     $js = json_encode($array);
                     echo $js;


            }



        }else{
           
            $Error = "pls enter valid email";
            echo $Error;
        }
    }

   


}else {
    echo 'no post';
}



?>

我正在使用 Alamofire 发送请求...如果我使用 respondeString 发布请求,我可以看到 json 的正确打印,如果我使用 responseJSON,我无法打印出 json .. 我收到错误说' JSON 无法序列化。无法读取该文件,因为它的格式不正确'

Alamofire 和 swiftyjson 代码

  func nxTest (){
        let parm : [String : Any] = ["staff_ID": "3879","password":"12345678","email":"damiano.miai@gmail.com","isCPT":false,"Name":"marco Frizzi"]
        AF.request("http://192.168.50.10/nx/public/register.PHP",method: .post,parameters: parm,headers: nil,interceptor: nil,requestModifier: nil).validate()
        
            .responseJSON { js in
                switch js.result {
                case .success(let value) :
                    let json = JSON(value)
                    debugPrint(json)
                case .failure(let err) :
                    debugPrint(err.localizedDescription)
                }
                }
            
        .responseString { st in
            print(st)
        }
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)