XML解析错误:找不到根元素位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML解析错误:找不到根元素位置相关的知识,希望对你有一定的参考价值。

所以我正在制作一个简单的登录/注册Web应用程序,但我不断收到以下错误:

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解析错误的研究,但我仍然无法让我的项目工作,我试过谷歌Chrome和Firefox

答案

AHA!今天得到了这个原因,这会让我看起来很傻,但有一天可能会帮助别人。

在我的机器上设置了Apache服务器,用PHP等等......我收到了这个错误...然后意识到原因:我点击了有问题的HTML文件(即包含javascript / JQuery的文件),所以浏览器中的地址栏显示“file:/// D:/apps/Apache24/htdocs/experiments/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放在同一个文件夹中,以防止在测试时出现跨源错误。

如果这不是问题,请确保php中的每个SQL调用都是正确的,并且您正在使用当前的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 + "
Error:" + 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)会有所帮助,因为我不必像这样给出我自己的示例。但是,我希望这些指针有所帮助!

以上是关于XML解析错误:找不到根元素位置的主要内容,如果未能解决你的问题,请参考以下文章

XML 解析错误:找不到根元素

XML 解析错误:找不到根元素

从流输入中解析没有根元素的 XML 片段列表

解析XML时出错:找不到元素 - 如何修复此错误?

Android XML解析错误:只允许一个根元素

调用 onCreateView() 之前出现“找不到片段 id 的视图”错误