我在Alamofire中遇到POST请求有问题。如果我尝试发出POST请求,似乎PHP脚本没有获取值。这是我的POST请求:
func userRegistration(){
let url = "http://offlineshopper.sunpowr.de/register.php"
let parameters: [String:String] = ["nickname":RegisterTexts.nickname, "password":RegisterTexts.password, "email":RegisterTexts.email]
print(parameters)
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON{ response in
if((response.result.value) != nil){
let swiftyJsonVar = JSON(response.result.value!)
print("Das kommt dabei raus: \(swiftyJsonVar)")
}
}
}
参数字典打印这个:["昵称":"测试","密码":"测试","电子邮件":"测试"]
所以我认为这是对的。
这是我的PHP脚本:
<?php
include("mysql_connect.php");
if(isset($_POST['nickname'])){
$nickname = $_POST['nickname'];
}
if(isset($_POST['password'])){
$password = $_POST['password'];
}
if(isset($_POST['email'])){
$email = $_POST['email'];
}
//Check if nickname is already used
$select = "SELECT `nickname` FROM `User` WHERE nickname = '$nickname'";
$result = mysqli_query($link, $select);
if (!$result){
$returnArray["message"] = "Fehler in der Datenbank!";
json_encode($returnArray);
}
if (mysqli_num_rows($result) != 0){
$returnArray["message"] = "Nickname bereits vorhanden!";
json_encode($returnArray);
}
//Add new User to the database
$sql = "INSERT INTO User (nickname, password, email) VALUES ('$nickname', '$password', '$email')";
if(mysqli_query($link, $sql)){
$returnArray["message"] = "Erfolgreich registriert!";
echo json_encode($returnArray);
}
else{
mysqli_error($link);
$returnArray["message"] = "Fehler!";
echo json_encode($returnArray);
}
mysqli_close($link)
?>
我得到了回应&#34; Erfolgreich registriert&#34;在我的应用程序中所以一切都应该正常。我还在我的数据库中获取了新的数据集。问题是只在数据库中设置了id,这是自动增量。其他字段为空,因此POST变量永远不会保存在数据库中..任何想法我在这里做错了什么?
编辑:它现在正在工作,只是转换
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON
与
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseJSON