Swift:使用 Alamofire 从 MYSQL 获取 JSON 数组值
Swift: Get JSON array value from MYSQL using Alamofire
我正在开发一个系统项目。如何使用 Alamofire 显示从 MySQL 到 3 UILabel(1.nameLabel.text, 2.idnumberLabel.text, 3.statusLabel.text) 的 3 列值。
PHP代码xxxx.php:
if ($_GET) {
$idnumber = $_GET['idnumber'];
// get a product from products table
$stmt = $pdo->prepare("SELECT * FROM register WHERE idnumber = :idnumber");
$stmt->execute(array(":idnumber" => $idnumber));
$result = $stmt->fetch();
if (!empty($result)) {
// check for empty result
if ($stmt->rowCount() > 0) {
$user = array();
$user["name"] = $result["name"];
$user["idnumber"] = $result["idnumber"];
$user["status"] = $result["status"];
// success
$response["success"] = 1;
// user node
$response["user"] = array();
array_push($response["user"], $user);
// echoing JSON response
echo json_encode($response);
} else {
// no product found
$response["success"] = 0;
$response["error_message"] = "Not registered user";
// echo no users JSON
echo json_encode($response);
}
} else {
// no product found
$response["success"] = 0;
$response["error_message"] = "No user found";
// echo no users JSON
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["error_message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
这是link通过id号查找用户http://localhost/xxxx.php/idnumber=?
我想使用 UITextfield 来执行 idnumber.
JSON编码
{"success":1,"user":[{"name":"PETER JENSEN","idnumber":"35433332","status":"PROCESS"}]}
Swift代码:
@IBAction func CheckUserStatusTapped(sender: UIButton) {
var idnumber = self.idnumberTextField.text
let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
let parameters =
["idnumber": idnumber]
//load and parse the JSON into an array
Alamofire.request(.POST, "http://localhost/xxxx.php", parameters: parameters).responseJSON { (request, response, data, error) in
var name = jsonResult [0]["name"]
var idnumber = jsonResult [0]["idnumber"]
var status = jsonResult [0]["status"]
}
}
我试过了,但没有任何结果和错误。我不知道向 UILabel.Please 显示此值帮助我 :(。我很困惑。抱歉我的英语不好!
如果您检索到的 data
是正确的,此问题将说明您如何解析 JSON 响应。实际上,您的代码 jsonResult
从未声明过。
当您声明 var idnumber
并将其赋值 idnumberTextField.text 时,您正在制作存储在 idnumberTextField.text 的字符串的副本。当您稍后将其他内容分配给 idnumber 时,它不会对 idnumberTextField.text 执行任何操作。这是您想要发展的关于编程的关键理解。
CheckUserStatusTapped 范围内的 idnumber 声明也被响应处理程序中的 idnumber 声明隐藏。即使您没有这样做,分配给 idnumber 也不会更改 idnumberTextField.
上的 .text 属性
您需要修改 UILabel 对象本身以使其显示其他内容。
您也不希望从后台线程更新 UI。在您的响应处理程序中,您将要向主线程分派一个函数,如下所示:
dispatch_async(dispatch_get_main_queue()) {
self.idnumberTextField.text = jsonResult[0]["idnumber"]
}
我正在开发一个系统项目。如何使用 Alamofire 显示从 MySQL 到 3 UILabel(1.nameLabel.text, 2.idnumberLabel.text, 3.statusLabel.text) 的 3 列值。
PHP代码xxxx.php:
if ($_GET) {
$idnumber = $_GET['idnumber'];
// get a product from products table
$stmt = $pdo->prepare("SELECT * FROM register WHERE idnumber = :idnumber");
$stmt->execute(array(":idnumber" => $idnumber));
$result = $stmt->fetch();
if (!empty($result)) {
// check for empty result
if ($stmt->rowCount() > 0) {
$user = array();
$user["name"] = $result["name"];
$user["idnumber"] = $result["idnumber"];
$user["status"] = $result["status"];
// success
$response["success"] = 1;
// user node
$response["user"] = array();
array_push($response["user"], $user);
// echoing JSON response
echo json_encode($response);
} else {
// no product found
$response["success"] = 0;
$response["error_message"] = "Not registered user";
// echo no users JSON
echo json_encode($response);
}
} else {
// no product found
$response["success"] = 0;
$response["error_message"] = "No user found";
// echo no users JSON
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["error_message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
这是link通过id号查找用户http://localhost/xxxx.php/idnumber=? 我想使用 UITextfield 来执行 idnumber.
JSON编码
{"success":1,"user":[{"name":"PETER JENSEN","idnumber":"35433332","status":"PROCESS"}]}
Swift代码:
@IBAction func CheckUserStatusTapped(sender: UIButton) {
var idnumber = self.idnumberTextField.text
let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
let parameters =
["idnumber": idnumber]
//load and parse the JSON into an array
Alamofire.request(.POST, "http://localhost/xxxx.php", parameters: parameters).responseJSON { (request, response, data, error) in
var name = jsonResult [0]["name"]
var idnumber = jsonResult [0]["idnumber"]
var status = jsonResult [0]["status"]
}
}
我试过了,但没有任何结果和错误。我不知道向 UILabel.Please 显示此值帮助我 :(。我很困惑。抱歉我的英语不好!
如果您检索到的 data
是正确的,此问题将说明您如何解析 JSON 响应。实际上,您的代码 jsonResult
从未声明过。
当您声明 var idnumber
并将其赋值 idnumberTextField.text 时,您正在制作存储在 idnumberTextField.text 的字符串的副本。当您稍后将其他内容分配给 idnumber 时,它不会对 idnumberTextField.text 执行任何操作。这是您想要发展的关于编程的关键理解。
CheckUserStatusTapped 范围内的 idnumber 声明也被响应处理程序中的 idnumber 声明隐藏。即使您没有这样做,分配给 idnumber 也不会更改 idnumberTextField.
上的 .text 属性您需要修改 UILabel 对象本身以使其显示其他内容。
您也不希望从后台线程更新 UI。在您的响应处理程序中,您将要向主线程分派一个函数,如下所示:
dispatch_async(dispatch_get_main_queue()) {
self.idnumberTextField.text = jsonResult[0]["idnumber"]
}