JavaScriptを使用して、残りのサーバーからJsonレスポンスを解析し、そのデータを表示しようとしています。 残りのサーバーは正常に動作し、データを解析できません。私は数十の例を見てきましたが、私の理解からはコードはうまく見えます。 これはAjaxを学ぶ私の最初の試みです。これを修正すれば私のプロジェクトを続けることができます。restサーバーからJsonレスポンスを受け取ることができません
この応答
{"id":"1","author":"Bill Burke","title":"RESTful Java with JAX-RS","year":"2009"}
これは、サーバー
@Path("/books") // JAX-RS annotation
public class BookResource {
@GET // JAX-RS annotation
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
@Path("/{bookId}")
public Book getBook(@PathParam("bookId") String id) {
return BookDao.instance.getBook(Integer.parseInt(id));
}
}
これは、クライアント
<!DOCTYPE html>
<html>
<head>
<title>Form to create a new resource</title>
<script type="text/javascript">
function getHTTPObject() {
var xhr = false;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xhr = false;
}
}
}
return xhr;
}
function grabFile(file) {
var request = getHTTPObject();
if (request) {
request.onreadystatechange = function() {
parseJ(request);
};
request.open("GET", file, true);
request.send(null);
}
}
function parseJ(request) {
if (request.readyState == 4) {
if (request.status == 200 || request.status == 304) {
var obj = JSON.parse(request.responseText);
document.getElementById("details").innerHTML = obj.id + " " + obj.author + " "
+ obj.title + " " + obj.year;
}
}
}
</script>
</head>
<body>
<a
href="http://localhost:8080/Distributed_REST_booksServer/rest/books/1"
onclick="grabFile(this.href); return false;">Book 1</a>
<br>
<div id="details"></div>
</body>
</html>
ありです210
サーバーがエラーを返しています。最初の文字は '<'なので、少なくともHTMLでなければなりません。 試してみてください: 'try {var obj = JSON.parse(request.responseText); } catch(e){console.log(e、 'on'、request.responseText); }結果を確認してください。 – henry700
新しいスクリーンショットを追加しました@ henry700 – Johnny24
サーバーがJSONではなくXMLを返しています!サーバーを正しく構成するか、代わりにJavascriptでXMLを解析します。 XMLの解析にはライブラリが必要です... '@Produces({MediaType.APPLICATION_XML、MediaType.APPLICATION_JSON、MediaType.TEXT_XML})'にJSONオプションだけを残そうとしましたか? – henry700