Получение данных из PHP с помощью JSON
Я получаю эту ошибку:
Опционально ("в<мета кодировку=\"кодировке UTF-8\"&ГТ;{\"электронная почта\":\"ошибка\",\"пароль\":\"ошибка\"}\р\н\р\н\р\н")
Ошибка домен=NSCocoaErrorDomain код=3840 "в формате JSON текст не начать с массивом или объектом, и вариант, чтобы осколки не установлено." UserInfo={NSDebugDescription=JSON text не начинался с массива или объекта и опции разрешить не устанавливать фрагменты.}
мой сервер отправляет ответ типа <meta charset="UTF-8">{"Email":"Error","Password":"Error"}.
Это определенно не является допустимым JSON, так как он начинается с `&низкотемпературный;`
я не знаю, почему это не работает, потому что я правильно вошел в систему с HTML-кодом с нуля
мой php код
<?php // Create connection $con=mysqli_connect("cantshowthis","hehe","sorry",":c"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } // This SQL statement selects ALL from the table 'Registro' $sql = "SELECT * FROM Registro"; // Check if there are results if ($result = mysqli_query($con, $sql)) { // If so, then create a results array and a temporary one // to hold the data $resultArray = array(); $tempArray = array(); // Loop through each row in the result set while($row = $result->fetch_object()) { // Add each row into our results array $tempArray = $row; array_push($resultArray, $tempArray); } // Finally, encode the array to JSON and output the results echo json_encode($resultArray); } // Close connections mysqli_close($con); ?>
это мой XCODE код
@IBAction func iniciarSesion(_ sender: UIButton) { guard let emailText = Email.text, !emailText.isEmpty, let contrasenaText = Contrasena.text, !contrasenaText.isEmpty else { displayAlert(title: "Información Faltante", message: "Debes porporcionar un correo y contraseña") return } let myURL = URL(string: "hehe") var request = URLRequest(url: myURL!) rather than `NSMutableURLRequest` request.httpMethod = "POST" let posString = "Email=\(emailText)&Password=\(contrasenaText)" request.httpBody = posString.data(using: .utf8) let task = URLSession.shared.dataTask(with: request) { data, response, error in if let error = error { print("error=\(error)") return } guard let data = data else { print("Something wrong") return } print(String(data: data, encoding: .utf8) as Any) do { let json = try JSONSerialization.jsonObject(with: data) if let parseJSON = json as? [String: Any]{ guard let resultValue = parseJSON["status"] as? String else { print("No `status` in result") return } print("message: \(resultValue) ") if (resultValue == "success") { UserDefaults.standard.set(true, forKey: "isUserLoggedIn") UserDefaults.standard.synchronize() } else { cases } } else { print("Result JSON is ill-formatted:", json) } } catch let err { print(err) } } task.resume() }
Что я уже пробовал:
синтаксический анализ JSON допустим но моя я думаю моя ошибка PHP я не знаю что делать
Richard MacCutchan
Проблема явно кроется в сервере. Вам нужно выяснить, откуда отправляются эти данные.
Member 14024497
не могли бы вы уточнить?
данные отправляются на URL-адрес, который связан с моим PHP - кодом
я консультируюсь с данными из xcode с помощью json
пусть myURL = URL(строка: "хе-хе")
Richard MacCutchan
Где создается строка данных? Должно быть, это то самое место, где надо искать.
Member 14024497
да php код уже исправлен
но все равно получаю ту же ошибку это так расстраивает не могу найти ответ нигде
<?php
session_start();
error_reporting(0);
echo '<meta charset="UTF-8">';
$host_db = "хе-хе";
$user_db = ":Д";
$pass_db = "Д:";
$db_name = "=DDD";
$подключение = новый в mysqli($host_db, $user_db, $pass_db, $имя_базы_данных);
если ($подключение-&ГТ;connect_error) {
die("La conexion falló:" . $conexion->connect_error);
}
$среда SQL = "выбрать * из Usuarios где Коррео = '".$_POST, где['электронной почты']".' и password = '".$_POST, где['пароль']".'";
$result = $conexion->query($sql);
if ($result->num_rows > 0) {
$row = mysqli_fetch_array($result);
$response['Email'] = $row['Correo'];
$response['Password'] = $row['Password'];
}
еще
{
$response['Email'] = 'ошибка';
$response['Password'] = 'ошибка';
}
Эхо json_encode($ответ);
mysqli_close($подключение);
?>
Richard Deeming
echo '<meta charset="UTF-8">';
Неужели? Вы не можете видеть, где в этом коде
<meta charset="UTF-8">
это откуда идет? :)
Member 14024497
да, я думаю, что это было проблемой для всего этого
я удалил эту строку и теперь это видно
Опционально("{\"электронная почта\":\"\jose.luar.1111@hotmail.com",\"\пароль":\"hi123\"}\р\н\р\н\р\н")
Никакого `статуса` в результате