2017-03-13 15 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解析エラーについていくつかの調査を行ってきましたが、私はまだプロジェクトの仕事をすることができませんあなたがJavaScriptで作業していると仮定すると、GoogleのChromeとFirefoxの

+0

に発行し

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

を解決し、voidで宣言されたとして、私はSpring MVCのアプリケーションで同じような状況がありましたURLとローカルWebサーバーを使用してそれらをローカルファイルとして開くとPHPは実行されませんが、PHPソースを出力して、ブラウザのソースビューを確認してください。 – ThW

答えて

0

で試してみました、あなたのデータをエコーの前にヘッダを配置する必要があります。

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

は、PHPサーバーを実行しているとPHPということですしていることを確認しますコードは適切なフォルダにあります。 PHPがなければ同じ問題に遭遇しました。また、同じフォルダにhtmlを置いて、テスト時にクロスオリジンエラーを防ぐことをお勧めします。

これは問題ではない場合は、すべてのSQL呼び出しが正しいかどうか、また現在の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!今日私はかなり愚かに見える理由のために得たがかもしれない誰かを助ける誰か。

私のマシンにPHPなどをインストールしてApacheサーバーを設定しています...私はこのエラーが発生しました...そして、なぜそれが実現したのですか?問題のHTMLファイル(Javascript/JQuery)、ブラウザのアドレスバーに「file:/// D:/apps/Apache24/htdocs/experiments/forms/index.html」と表示されました。

Apacheサーバーを実際に使用するためには(実行中など)、http://localhost/experiments/forms/index.htmlがブラウザのアドレスバーに表示されます。

私はこれまで、「index.php」ファイルを使用していて、「index.html」ファイルに変更しました。以前はローカルホストを使って "適切に"アクセスする必要があったので、ちょっとした問題です。

0

、それが文字列を返すように変更すると、あなたはページ/スクリプトを開く必要があります

@PostMapping() 
public String aPostMethod(@RequestBody(required = false) String body) throws IOException { 
    System.out.println("DoSome thing" + body); 
    return "justReturn something"; 
} 
関連する問題