所以我正在制作一个简单的登录/注册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

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”。

在缓解方面,我到目前为止一直在使用“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

Username

Password

Sign Up

Login

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

$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)会有所帮助,因为我不必像这样给出我自己的示例。但是,我希望这些指针有所帮助!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐