it-swarm.dev

Chyba analýzy XML: nebyl nalezen kořenový prvek Umístění

Takže dělám jednoduchou přihlašovací/registrační webovou aplikaci, ale stále dostávám následující chybu:

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:

zde je můj 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();
?>

Udělal jsem nějaký výzkum o xml analýze chyb, ale stále nemůžu zvládnout, aby můj projekt práce, ive pokusil s Google Chrome a Firefox

3
Edgar Serna

AHA! Mám to dnes z důvodu, který mě bude vypadat docela hloupě, ale který možná jednoho dne někomu pomůže.

Po nastavení serveru Apache na mém počítači, s PHP a tak dále ... jsem dostal tuto chybu ... a pak jsem si uvědomil, proč: Klikl jsem na dotyčný soubor HTML (tj. Ten, který obsahuje Javascript/JQuery), takže adresní řádek v prohlížeči zobrazoval "file: /// D: /apps/Apache24/htdocs/experiments/forms/index.html".

Co musíte udělat pro to, abyste skutečně používali server Apache (za předpokladu, že je spuštěn, atd.), Je go" http: //localhost/experiments/forms/index.html " v adresním řádku prohlížeče. 

Ve zmírňování jsem doposud používal soubor "index.php" a změnil se na soubor "index.html". Trochu gotcha, protože s bývalým jste povinni k němu přistupovat "správně" pomocí localhostu.

7
mike rodent

Stejnou situaci jsem měl na jaře MVC Application, protože byla prohlášena za neplatnou, změnou na návrat String vyřešil problém

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

Na 

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

Ujistěte se, že je spuštěn php server a že kód php je v příslušné složce. Do stejného problému jsem narazil, pokud tam php nebyl. Také doporučuji, aby vaše html ve stejné složce, aby se zabránilo cross-Origin chyby při testování.

Pokud tomu tak není, ujistěte se, že každé volání SQL je správné v php, a že používáte aktuální php standardy ... Php rychle, na rozdíl od html, css a Javascript, takže některé funkce mohou být zastaralé.

Také jsem si všiml, že nemusíte sbírat proměnnou správně, což může také způsobit tuto chybu. Pokud posíláte proměnné prostřednictvím formuláře, musí být ve správném formátu a odeslány buď POST nebo GET na základě vašich preferencí. Například, kdybych měl přihlašovací stránku pro bludiště:

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

To by pomohlo, kdybyste zahrnuli další části kódu, jako je HTML a JavaScript, protože bych nemusel dávat svůj vlastní příklad takhle. Doufám však, že tyto ukazatele pomohou!

0
Midimistro

Za předpokladu, že pracujete s javascriptem, musíte před echo data dát záhlaví:

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