2017-03-13 94 views
2

所以我做一个简单的登录/注册的Web应用程序,但我不断收到以下错误:XML解析错误:没有根元素中找到位置

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

+0

你将不得不打开你的网页/脚本使用URL和本地网络服务器。将它们作为本地文件打开将不会执行PHP,但输出PHP源代码,请检查浏览器的源代码视图。 – ThW

回答

0

假设你正在使用JavaScript尝试,你需要把一个头在呼应你的数据面前:

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

确保你的PHP服务器正在运行,并且PHP代码位于相应的文件夹中。如果php不在那里,我遇到了同样的问题。我也建议把你的HTML放在同一个文件夹中,以防止测试时出现交叉错误。

如果这不是问题,请确保每个SQL调用在php中都是正确的,并且您正在使用当前的php标准......与html,css和Javascript不同,Php快速更改,因此某些函数可能会被弃用。

另外,我注意到你可能没有正确收集你的变量,这也会导致这个错误。如果您通过表单发送变量,则需要采用适当的格式,并根据您的偏好通过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 + "\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(); 
?> 

如果您包含代码的其他部分(如html和JavaScript),这将有所帮助,因为我不必像这样给自己的例子。不过,我希望这些指针能够帮助!

3

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”文件。有点困难,因为对于前者,你必须使用本地主机“正确地”访问它。

0

我有同样的情况在Spring MVC应用程序,因为它被宣布为无效,改变它返回字符串解决的问题

@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"; 
} 
相关问题