简单 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;
?>
我写了这个简单的 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;
?>