2016-04-04 27 views
0

JavaScript kullanarak bir dinlenme sunucusundan bir Json yanıtı ayrıştırmak ve verileri görüntülemek çalışıyorum. Geri kalan sunucu, verileri ayrıştırılamayacak kadar iyi çalışıyor. Düzinelerce örneğe baktım ve anlayışımdan, kod iyi görünüyor. Bu, Ajax'ı öğrenme konusunda ilk denememdir ve eğer bunu düzeltirsem projeme devam edebilirim. Dinlenme sunucusundan Json yanıtı mümkün değil

Bu

yanıt

{"id":"1","author":"Bill Burke","title":"RESTful Java with JAX-RS","year":"2009"} 

Bu, istemci

<!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> 

html console error

olan

@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)); 
} 
} 

sunucu 210

+0

Sunucunuz bir hata veriyor. Ya da en azından HTML, çünkü ilk char '<'. Deneme: 'try {var obj = JSON.parse (request.responseText); catch (e) {console.log (e, 'açık', request.responseText); Doğrulamak, lütfen ve sonuçları yayınlamak için – henry700

+0

Yeni bir ekran görüntüsü ekledim @ henry700 – Johnny24

+0

Sunucunuz XML döndürüyor, JSON değil! Sunucuyu uygun şekilde yapılandırın ya da bunun yerine Javascript'inizle XML'yi ayrıştırın. XML'in ayrıştırılması için bir kütüphaneye ihtiyacınız var ... Sadece @Produces ({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) 'deki JSON seçeneğini bırakmayı denediniz mi? – henry700

cevap

1

Sunucunuz XML döndürüyor, bunu JSON olarak zorlamaya çalışın ve istemciden gelen isteklere bir kabul başlığı ekleyin.

+0

XML için MediaType'ı kaldırdım ve sadece Json'u bıraktım ve çalıştı. – Johnny24