it-swarm.com.de

XML-Parsing-Fehler: Kein Root-Element gefunden Location

Ich mache also eine einfache Anmelde-/Registrierungs-Webanwendung, erhalte jedoch die folgende Fehlermeldung:

XML Parsing Error: no root element found Location: file:///C:/xampp/htdocs/EdgarSerna95_Lab/login.html Line Number 37, Column 3:   

und 

XML Parsing Error: no root element found Location: file:///C:/xampp/htdocs/EdgarSerna95_Lab/php/login.phpLine Number 37, Column 3:

hier ist mein 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();
?>

Ich habe etwas über XML-Parsing-Fehler geforscht, aber ich schaffe es immer noch nicht, mein Projekt zum Erfolg zu bringen. Ich habe es mit Google Chrome und Firefox versucht

3
Edgar Serna

AHA! Habe das heute aus einem Grund bekommen, der mich ziemlich albern aussehen lässt, aber der könnte eines Tages jemandem helfen wird.

Nachdem ich mit PHP usw. einen Apache-Server auf meinem Rechner eingerichtet hatte, bekam ich diesen Fehler ... und erkannte dann, warum: Ich hatte auf die betreffende HTML-Datei geklickt (d. H Die Adressleiste im Browser zeigte "file: /// D: /apps/Apache24/htdocs/experiments/forms/index.html".

Was Sie tun müssen, um den Apache-Server tatsächlich zu verwenden (vorausgesetzt, er läuft usw.), ist go " http: //localhost/experiments/forms/index.html = " in der Adressleiste des Browsers.

Zur Abmilderung habe ich bisher eine "index.php" -Datei verwendet und nur in eine "index.html" -Datei geändert. Etwas gotcha, da man bei ersteren gezwungen ist, mit localhost "richtig" darauf zuzugreifen.

7
mike rodent

Ich hatte dieselbe Situation in Spring MVC Application, als sie für ungültig erklärt wurde

@PostMapping()
public void aPostMethod(@RequestBody( required = false) String body) throws IOException {
System.out.println("DoSome thing" + body); 
}

Zu 

@PostMapping()
public String aPostMethod(@RequestBody( required = false) String body) throws IOException {
    System.out.println("DoSome thing" + body);
    return "justReturn something";
}
3
Raj

Stellen Sie sicher, dass der PHP-Server ausgeführt wird und sich der PHP-Code im entsprechenden Ordner befindet. Ich stieß auf das gleiche Problem, wenn der PHP nicht dabei war. Ich empfehle außerdem, Ihre HTML-Datei in demselben Ordner abzulegen, um Cross-Origin-Fehler beim Testen zu vermeiden.

Wenn dies nicht das Problem ist, stellen Sie sicher, dass jeder SQL-Aufruf in PHP korrekt ist und Sie die aktuellen PHP-Standards verwenden.

Ich habe auch festgestellt, dass Sie Ihre Variable möglicherweise nicht korrekt sammeln, was auch diesen Fehler verursachen kann. Wenn Sie Variablen über ein Formular senden, müssen diese im richtigen Format vorliegen und entweder POST oder GET gesendet werden, je nach Ihren Vorlieben. Wenn ich beispielsweise eine Anmeldeseite für ein Labyrinth-Spiel hatte:

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();
?>

Es wäre hilfreich, wenn Sie die anderen Teile des Codes wie HTML und JavaScript einbinden würden, da ich mein eigenes Beispiel nicht so nennen muss. Ich hoffe jedoch, dass diese Hinweise helfen!

0
Midimistro

Vorausgesetzt, Sie arbeiten mit Javascript, müssen Sie einen Header vor das Echo Ihrer Daten setzen:

header('Content-Type: application/json');
echo json_encode($response);
0
Yolo