2017-03-13 144 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"; 
} 
相關問題