Поэтому я делаю простое веб-приложение для входа / регистрации, но получаю следующую ошибку:
XML Parsing Error: no root element found Location: file:///C:/xampp/htdocs/EdgarSerna95_Lab/login.html Line Number 37, Column 3:
а также
XML Parsing Error: no root element found Location: file:///C:/xampp/htdocs/EdgarSerna95_Lab/php/login.phpLine Number 37, Column 3:
вот мой login.php
<?php
header('Content-type: application/json');
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "jammer";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
header('HTTP/1.1 500 Bad connection to Database');
die("The server is down, we couldn't establish the DB connection");
}
else {
$conn ->set_charset('utf8_general_ci');
$userName = $_POST['username'];
$userPassword = $_POST['userPassword'];
$sql = "SELECT username, firstName, lastName FROM users WHERE username = '$userName' AND password = '$userPassword'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$response = array('firstName' => $row['firstNameName'], 'lastName' => $row['lastName']);
}
echo json_encode($response);
}
else {
header('HTTP/1.1 406 User not found');
die("Wrong credentials provided!");
}
}
$conn->close();
?>
Я провел некоторое исследование об ошибках разбора XML, но мне все еще не удается заставить мой проект работать, я попробовал с Google Chrome и Firefox
АГА! Получил это сегодня по причине, которая заставит меня выглядеть довольно глупо, но который может быть однажды помогите кому-нибудь.
Настроив сервер Apache на моем компьютере, с PHP и так далее … Я получил эту ошибку … и затем понял, почему: я нажал на нужный HTML-файл (т. Е. Тот, который содержит Javascript / JQuery), поэтому в адресной строке браузера было показано «file: /// D: /apps/Apache24/htdocs/experiment/forms/index.html».
То, что вам нужно сделать, чтобы фактически использовать сервер Apache (при условии, что он работает и т. Д.), — это перейти «Http: //localhost/experiments/forms/index.html« в адресной строке браузера.
Для смягчения последствий я до сих пор использовал файл «index.php» и просто изменил на файл «index.html». Немного подвох, так как с первым вы должны получить к нему доступ «должным образом», используя localhost.
В Spring MVC Application возникла та же ситуация, что и в объявлении void, и изменив его на String, я решил проблему
@PostMapping()
public void aPostMethod(@RequestBody( required = false) String body) throws IOException {
System.out.println("DoSome thing" + body);
}
к
@PostMapping()
public String aPostMethod(@RequestBody( required = false) String body) throws IOException {
System.out.println("DoSome thing" + body);
return "justReturn something";
}
Предполагая, что вы работаете с Javascript, вам нужно поместить заголовок перед отображением ваших данных:
header('Content-Type: application/json');
echo json_encode($response);
Убедитесь, что ваш php-сервер работает и что php-код находится в соответствующей папке. Я столкнулся с этой же проблемой, если php не было там. Я также рекомендую поместить ваш html в ту же папку, чтобы предотвратить возникновение перекрестных ошибок при тестировании.
Если это не проблема, убедитесь, что каждый вызов SQL корректен в php, и что вы используете текущие стандарты php … Php меняется быстро, в отличие от html, css и Javascript, поэтому некоторые функции могут быть устаревшими.
Кроме того, я заметил, что вы, возможно, неправильно собираете свою переменную, что также может вызвать эту ошибку. Если вы отправляете переменные через форму, они должны быть в правильном формате и отправлены POST или GET, в зависимости от ваших предпочтений. Например, если бы у меня была страница входа в лабиринт:
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<form class="modal-content animate" method="post">
<div class="container">
<label><b>Username</b></label>
<input type="text" id="usernameinput" placeholder="Enter username" name="uname" required>
<label><b>Password</b></label>
<input type="password" id="passwordinput" placeholder="Enter Password" name="psw" required>
<button onclick="document.getElementById('id01').style.display='block'">Sign Up</button>
<button type="button" id="loginsubmit" onclick="myLogin(document.getElementById('usernameinput').value, document.getElementById('passwordinput').value)">Login</button>
</div>
</form>
JavaScript
function myLogin(username, password){
var datasend=("user="+username+"&pwd="+password);
$.ajax({
url: 'makeUserEntry.php',
type: 'POST',
data: datasend,
success: function(response, status) {
if(response=="Username or Password did not match"){
alert("Username or Password did not match");
}
if(response=="Connection Failure"){
alert("Connection Failure");
}
else{
localStorage.userid = response;
window.location.href = "./maze.html"}
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
var response = xhr.responseText;
console.log(response);
var statusMessage = xhr.status + ' ' + xhr.statusText;
var message = 'Query failed, php script returned this status: ';
var message = message + statusMessage + ' response: ' + response;
alert(message);
}
}); // end ajax call
}
PHP
<?php
$MazeUser=$_POST['user'];
$MazePass=$_POST['pwd'];//Connect to DB
$servername="127.0.0.1";
$username="root";
$password="password";
$dbname="infinitymaze";
//Create Connection
$conn = new MySQLi($servername, $username, $password, $dbname);
//Check connetion
if ($conn->connect_error){
die("Connection Failed: " . $conn->connect_error);
echo json_encode("Connection Failure");
}
$verifyUPmatchSQL=("SELECT * FROM mazeusers WHERE username LIKE '$MazeUser' and password LIKE '$MazePass'");
$result = $conn->query($verifyUPmatchSQL);
$num_rows = $result->num_rows;
if($num_rows>0){
$userIDSQL =("SELECT mazeuserid FROM mazeusers WHERE username LIKE '$MazeUser' and password LIKE '$MazePass'");
$userID = $conn->query($userIDSQL);
echo json_encode($userID);
}
else{
echo json_encode("Username or Password did not match");
}
$conn->close();
?>
Было бы полезно, если бы вы включили другие части кода, такие как HTML и JavaScript, так как мне не пришлось бы приводить свой собственный пример, подобный этому. Тем не менее, я надеюсь, что эти указатели помогут!