2017-03-13 1 views
2

So bin ich eine einfache Anmeldung/Registrierung Web-Anwendung zu machen, aber ich bekomme immer folgende Fehlermeldung:XML Parsing-Fehler: kein Root-Element gefunden Location

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 einige der Forschung über xML-Parsing-Fehler gemacht, aber ich kann nicht verwalten noch zu meiner Projektarbeit zu machen, ive versucht, mit Google Chrome und Firefox

+0

gelöst Sie müssen Sie öffnen Seiten/Scripts Verwenden einer URL und des lokalen Webservers. Wenn Sie sie als lokale Dateien öffnen, führen Sie das PHP nicht aus, sondern geben Sie die PHP-Quelle aus. Überprüfen Sie die Quellansicht Ihres Browsers. – ThW

Antwort

0

Vorausgesetzt, dass Sie mit JavaScript arbeiten, müssen Sie Ihre Daten von Echo einen Header vor setzen:

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

sicher Stellen Sie PHP-Server ausgeführt wird, und dass die php Der Code befindet sich im entsprechenden Ordner. Ich stieß auf das gleiche Problem, wenn der PHP nicht da war. Ich empfehle auch, den HTML-Code in den gleichen Ordner zu stellen, um Fehler beim Ursprungstest zu vermeiden.

Wenn das nicht das Problem ist, stellen Sie sicher, dass jeder SQL-Aufruf im PHP korrekt ist, und dass Sie aktuelle PHP-Standards verwenden ... PHP ändert sich schnell im Gegensatz zu HTML, CSS und Javascript, so dass einige Funktionen veraltet sein können .

Außerdem habe ich festgestellt, dass Sie Ihre Variable möglicherweise nicht korrekt sammeln, was auch diesen Fehler verursachen kann. Wenn Sie Variablen über das Formular senden, müssen sie im richtigen Format sein und entweder per POST oder GET gesendet werden, je nach Vorliebe. Zum Beispiel, wenn ich eine Login-Seite 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ürde helfen, wenn Sie die anderen Teile des Codes wie HTML und JavaScript miteinbeziehen würden, da ich kein eigenes Beispiel geben müsste. Ich hoffe jedoch, dass diese Hinweise helfen!

3

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

Nach dem Einrichten eines Apache-Servers auf meinem Rechner, mit PHP und so weiter ... habe ich diesen Fehler ... und dann realisiert warum: Ich hatte auf die betreffende HTML-Datei geklickt (dh diejenige mit dem Javascript/JQuery), so dass die Adressleiste im Browser "file: /// D: /apps/Apache24/htdocs/experiments/forms/index.html" zeigte.

Was Sie tun müssen, um den Apache-Server tatsächlich zu nutzen (vorausgesetzt, er läuft usw.), gehen Sie in die Adresszeile des Browsers "http://localhost/experiments/forms/index.html".

In Mitigation habe ich bisher eine "index.php" -Datei verwendet und nur in eine "index.html" -Datei geändert. Das ist ein bisschen eine Frage, denn bei ersterem müssen Sie mit localhost "richtig" darauf zugreifen.

0

Ich hatte gleiche Situation in Spring MVC Anwendung, da es als ungültig erklärt wurde, es zu ändern String zurück, um die Ausgabe

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

Um

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