設定したMySQLデータベースから情報を取得する無限スクローラーを実装するための演習に取り組んでいます。私のスクローラー部分は機能しているようで、データベース、接続、クエリは別のファイルでテストすると正常に見えます。XMLファイルは希望どおりに構造化されていると思います。ただし、XMLを解析し、要素タグでデータを取得してhtmlに追加しようとするコードの部分に到達すると、Chromeのインスペクターウィンドウで次のエラーが発生します。
Uncaught Error: Syntax error, unrecognized expression: Resource id #2<?xml version="1.0"?>
<response><commentData>...(the rest of my XML file)
私はプログラミングにかなり慣れていないので、何が問題を引き起こしているのか途方に暮れています。これが私のコードです。私はいくつかのことをコメントアウトしているので、うまくいけば、それは誰もがっかりさせないでしょう。また、include.inc.phpファイルには、dbへの接続とクエリの実行に使用される関数のみが含まれています。ありがとう。
AJAXscroller.html:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<title>Scroller with AJAX!</title>
<link rel="stylesheet" href="styles/scroller.css" type="text/css">
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="./include/jquery.js"></script>
<script src="./include/scroller.js"></script>
</head>
<body>
<div id="info"></div>
<section id="userComments">
<p>Lorem ipsum dolor... </p> <!-- my code longer to fill page & requre scroll -->
<p>Lorem ipsum dolor... tulla, semper gravida magna velit eu sem.</p>
<p>Lorem ipsum dolor... tulla, semper gravida magna velit eu sem.</p>
<p>Lorem ipsum dolor... tulla, semper gravida magna velit eu sem.</p>
<p>Lorem ipsum dolor... tulla, semper gravida magna velit eu sem.</p>
</section>
<div id="loaderGif"><img src="img/220.gif"></div>
</body>
</html>
scroller.js:
$(document).ready(
function()
{
$("#loaderGif").hide();
var start = 0; //variable to indicate the starting row in the db query
var numRows = 30; //this is the number of db rows to fetch with each query
$(window).scroll(
function()
{
var top = $(this).scrollTop();
var txt = "scrollTop: " + top +
"<br/>Win H: " + $(this).height() +
"<br/>Page H: " + ($(this).height() + top) +
"<br/>Doc H: " + $(document).height();
$("#info").html(txt);
if ($(window).scrollTop() >= $(document).height() - $(window).height())
{
$("#loaderGif").fadeIn(2000);
$.post("./include/AJAXscroll.php", {m: start, n: numRows}, function(xml)
{
//code that happens when we get response
$("commentData", xml).each(
function()
{
var userName = $(this).find("username").text();
var comment = $(this).find("comment").text();
var created = $(this).find("created").text();
var str = "<hr><p>" + userName + " commented at " + created + "</p>" + comment;
$("#userComments").append(str);
$("#loaderGif").fadeOut(2000);
}
);
}
);
}
}
);
}
);
AJAXscroll.php:
<?php
include ("./include.inc.php");
$link = connect();
$db = "myTestDB";
$m = $_POST["m"];
$n = $_POST["n"];
$sql = "SELECT * FROM comments WHERE username='Donna' ORDER BY created DESC LIMIT 0,30";
// $sql = "SELECT * FROM comments WHERE username='Donna' ORDER BY created DESC LIMIT " . m . "," . n;
$res = send_sql($sql, $link, $db);
echo $res;
$dom = new DOMDocument();
$response = $dom->createElement("response");
while ($row = mysql_fetch_assoc($res)) // create the XML file
{
$commentData = $dom->createElement("commentData");
$username = $dom->createElement("username");
$usernameValue = $dom->createTextNode($row["username"]);
$username->appendChild($usernameValue);
$comment = $dom->createElement("comment");
$commentValue = $dom->createTextNode($row["comment"]);
$comment->appendChild($commentValue);
$created = $dom->createElement("created");
$createdValue = $dom->createTextNode($row["created"]);
$created->appendChild($createdValue);
$commentData->appendChild($username);
$commentData->appendChild($comment);
$commentData->appendChild($created);
$response->appendChild($commentData);
}
$dom->appendChild($response);
$xmlString = $dom->saveXML();
// $dom->save("myXML.xml");
header('Content-type: text/xml');
echo $xmlString;
?>