简单 php 脚本,无法 return json

simple php script, unable return json

我写了这个简单的 php 脚本,应该 return 一个 json。 我不明白这里有什么问题。

如果我评论 - 删除关于连接到 mySQL(PDO) 的代码部分,我能够按预期打印出来,否则 Alamofire 和 SwiftyJson return 我的错误

'""JSON 无法序列化,因为错误:\n无法读取数据,因为它的格式不正确。"'

<?php
header('Content-Type: application/json');


// if i remove the pdo to connect to mySQL server the everthing work fine

// $host = "127.0.0.1";
// $user = "test";
// $password = "123456789";
// $database = "nx_database";


// try{
// $pdo = new PDO ("mysql:host=$host;dbname=$database", $user, $password);
// $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// print('connesso db -- ');
// }catch(PDOException $e){
// echo "DB Connection Fail" . $e->getMessage();
// die();
// }


$staff = $_POST['staff_ID'];
    
$array = [
    'isLoggedIn'=>$staff
];

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

?>



我附上代码也用于 post 请求:

  func trysimple (){
        let parm : [String : Any] = ["staff_ID": "3879"]
        AF.request("http://127.0.0.1/nx/public/testRegister.php", method: .post,parameters: parm, headers: nil, interceptor: nil, requestModifier: nil)
        
            .responseString { st in
                print(st)
            }
        
            .responseJSON { js in
                switch js.result {
                case .success(let value) :
                    let json = JSON(value)
                    debugPrint(json)
                case .failure(let err) :
                    debugPrint(err.localizedDescription)
                }
                }
            }
        }

请像这样更新您的代码,以便简单打印 json

<?php

header('Content-Type: application/json');

$array = array();

if(isset($_POST['staff_ID']))
{
     $staff = $_POST['staff_ID'];
    
     $array = array(
        'isLoggedIn' => $staff
     );
}

echo json_encode($array);

我不知道为什么这里需要数据库连接,但我想我知道错在哪里了。您在此处显示的文本不是 json:print('connesso db -- '); 如果您希望使用 json 格式,则应仅以 json 格式显示所有内容。即使在连接失败的可能性上。 我会这样写:

<?php
 $host = "127.0.0.1";
 $user = "test";
 $password = "123456789";
 $database = "nx_database";

header('Content-Type: application/json');

 try{
 $pdo = new PDO ("mysql:host=$host;dbname=$database", $user, $password);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 }catch(PDOException $e){
   echo json_encode(['error' => "DB Connection Fail" . $e->getMessage()]);
   exit;
 }


$staff = $_POST['staff_ID'];
    
$array = [
    'isLoggedIn'=>$staff
];
$js = json_encode($array);

echo $js;

?>