Мой запрос alamofire возвращается как сбой, когда я печатаю ответ в xcode, однако, веб-сервис фактически выполняет это, и все должно происходить так, как должно, кроме факта его возвращения как сбой
Alamofire.request(BASE_URL + "index.php/feed/like", method: .post, parameters: parameters, headers: headers).responseJSON { response in
let result = response.result
debugPrint(response)
print(result)
if (result.value != nil) {
let json = JSON(result.value!)
print(json)
if json["status"] == false {
showError(type: "generic")
} else {
let nolikes = Int(self.lblLikes.text!)! + 1
self.lblLikes.text = String(nolikes)
self.actionLike.image = UIImage(named: "ActionLiked")
}
}
}
это моя ошибка
[Result]: FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 1." UserInfo={NSDebugDescription=Invalid value around character 1.}))
[Timeline]: Timeline: { "Request Start Time": 509902187.696, "Initial Response Time": 509902188.176, "Request Completed Time": 509902188.177, "Serialization Completed Time": 509902188.177, "Latency": 0.480 secs, "Request Duration": 0.480 secs, "Serialization Duration": 0.000 secs, "Total Duration": 0.481 secs }
и это моя функция PHP в Codeigniter
function like_post()
{
$post = $this->_post_args;
$post = $this->security->xss_clean($post);
$like = $this->Feed_model->likePost($post);
if($like == TRUE) {
$this->set_response([
'status' => TRUE,
'message' => 'SUCCESS'
], REST_Controller::HTTP_ACCEPTED);
} else {
$this->set_response([
'status' => FALSE,
'error' => 'ALREADY_LIKED'
], REST_Controller::HTTP_BAD_REQUEST);
}
}
public function likePost($post)
{
$postid = $post['post_id'];
$userid = $post['user_id'];
$query = $this->db->query("SELECT * FROM `post_likes` WHERE `user_id` = '{$userid}' AND `post_id` = '{$postid}'");
if($query->num_rows() > 0) {
return false;
} else {
$insert = [
'user_id' => $userid,
'post_id' => $postid
];
$this->db->insert('post_likes', $insert);
$currpost = $this->db->query("SELECT * FROM `posts` WHERE `post_id` = '{$postid}'");
$likes = $currpost->likes;
$update = ['likes' => $likes + 1];
$this->db->update('posts', $update, "post_id = '{$postid}'");
return true;
}
}
код вернет false, если пользователь уже выполнил это действие, поэтому, если я сначала нажму на это действие, оно вернется как сбой в консоли, но скрипт php запустится, вставив все в базу данных и т. д. Однако, если я щелкну по нему снова, я получит ответ об ошибке php (таким образом, запрос будет показан как успешный, но не выполнен)
Задача ещё не решена.
Других решений пока нет …