Mam nadzieję, że maniaki javascript dadzą radę.
Ręce mi się palą do klikania guzika "Pomógł".
Nie udało mi się w zaden sposób uzyskać odpowiedzi od serwera, nie mogę namierzyć przyczyny!!
Postawiłem serwlet z którym potrafię gadać. Wpisując http w przeglądarkę otrzymuję odpowiedzi od 2 serwletów do wyboru, jeden zwraca JSONA w postaci tablicy obiektów, drugi zwykły tekst.
Podejrzewam, że w pierwszym przypadku, jscript nie potrafi z automatu odebrać tablicy jsonów i nie wiem jak to zrobić.
Przeanalizowałem tutorialową odpowieć z flircka oraz odpowiedź mojego serwletu i zamieszczam początki tych odpowiedzi:
flirck:
({
"title": "Recent Uploads tagged cat",
"link": "http://www.flickr.com/photos/tags/cat/",
....)
mój:
[{"robotElements":[{"robotId":17582,"tag" ... ............ 168.0.104","date":1304961255367}]
W przypadku zwykłego tekstu z kolei funkcja przchwytująca error podowiada mi uparcie, ze nie mam podłączenia z netem.
szukaj w zamieszczonym kodzie linii: alert('You are offline!!\n Please Check Your Network.');
Patrzę również w firefoxie z poziomu narzędzia Konsoli WWW i czego się dowiaduję? Stała i ta sama śpiewka:
[19:20:28.149] GET http://89.77.8.164:8090/Repository/AjaxTest [HTTP/1.1 200 OK 7ms]
więc teoretycznie wszystko gra natomiast w żaden sposób nie mogę przechwycić danych, funkcja callbackowa nie jest w ogóle uruchamiana!
Nerw mnie chwyta, kod poniżej, opis w środku.
Kod
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="jquery-1.5.2.min.js"></script>
<script language="JavaScript">
// funkcja odswierzajaca parametry
function refreshData(){
var url = "http://89.77.8.164:8090/Repository/AjaxTest";
//var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?";
//sczytanie odpowiedzi
$.get(url, function(data){
alert("Data Loaded: " + data);
},"html");
}
// skopiowana od kogoś funkcja przechwytu wszelkiego rodzaju przydatnych tutaj bledow
$().ready(function(){
$.ajaxSetup({
error:function(x,e){
if(x.status==0){
// ten alert występuje za każdym razem (prócz tutorialowego jsona z 1 obiektem jsona w funkcji test()
alert('You are offline!!\n Please Check Your Network.');
}else if(x.status==404){
alert('Requested URL not found.');
}else if(x.status==500){
alert('Internel Server Error.');
}else if(e=='parsererror'){
alert('Error.\nParsing JSON Request failed.');
}else if(e=='timeout'){
alert('Request Time out.');
}else {
alert('Unknow Error.\n'+x.responseText);
}
}
});
});
// funkcja testowa, sprawdzalem czy dziala json mojego serwera oraz json tutorialowy z sieci
// wniosek: moj nie dziala bo zakodowalem w nim tablice obiektow jsona (poza tym, ze zaden response nawet najprostszy nie umiem odebrac)
// przyklad z tutoriala dziala (zwracany jeden obiekt jsona)
function test() {
console.log("przed jsonem ");
/*
$.getJSON("http://89.77.8.164:8090/Repository/RobotRepository?wtw=2", function(data) {
alert("GH");
console.log("w json ");
});
*/
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){
console.log("w json ");
});
console.log("za jsonem ");
}
</script>
</head>
<BODY onLoad="refreshData();">
<fieldset class="all-winlke-rounded">
<legend>Demonstration</legend>
<FORM name="ajax1" method="GET" action="">
<p>Received: <input type="text" id="message" size="32" value=""></p>
</FORM>
<DIV>
<TABLE border ="0" class="coloured-rounded-region">
<TR><TD colspan=2><div id="name0" class="head">robot0</div><TD></TR>
<TR>
<TD>
<img src="./png/default.png">
</TD>
<TD>
<TABLE>
<TR><TD>idle time: </TD><TD><div id="it1">123</div></TD></TR>
<TR><TD>moving time: </TD><TD><div id="mt1">456</div></TD></TR>
<TR><TD>welding time: </TD><TD><div id="wt1">789</div></TD></TR>
</TABLE>
</TD>
</TR>
</TABLE>
</DIV>
<BR>
</fieldset>
</BODY>
</HTML>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="jquery-1.5.2.min.js"></script>
<script language="JavaScript">
// funkcja odswierzajaca parametry
function refreshData(){
var url = "http://89.77.8.164:8090/Repository/AjaxTest";
//var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?";
//sczytanie odpowiedzi
$.get(url, function(data){
alert("Data Loaded: " + data);
},"html");
}
// skopiowana od kogoś funkcja przechwytu wszelkiego rodzaju przydatnych tutaj bledow
$().ready(function(){
$.ajaxSetup({
error:function(x,e){
if(x.status==0){
// ten alert występuje za każdym razem (prócz tutorialowego jsona z 1 obiektem jsona w funkcji test()
alert('You are offline!!\n Please Check Your Network.');
}else if(x.status==404){
alert('Requested URL not found.');
}else if(x.status==500){
alert('Internel Server Error.');
}else if(e=='parsererror'){
alert('Error.\nParsing JSON Request failed.');
}else if(e=='timeout'){
alert('Request Time out.');
}else {
alert('Unknow Error.\n'+x.responseText);
}
}
});
});
// funkcja testowa, sprawdzalem czy dziala json mojego serwera oraz json tutorialowy z sieci
// wniosek: moj nie dziala bo zakodowalem w nim tablice obiektow jsona (poza tym, ze zaden response nawet najprostszy nie umiem odebrac)
// przyklad z tutoriala dziala (zwracany jeden obiekt jsona)
function test() {
console.log("przed jsonem ");
/*
$.getJSON("http://89.77.8.164:8090/Repository/RobotRepository?wtw=2", function(data) {
alert("GH");
console.log("w json ");
});
*/
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){
console.log("w json ");
});
console.log("za jsonem ");
}
</script>
</head>
<BODY onLoad="refreshData();">
<fieldset class="all-winlke-rounded">
<legend>Demonstration</legend>
<FORM name="ajax1" method="GET" action="">
<p>Received: <input type="text" id="message" size="32" value=""></p>
</FORM>
<DIV>
<TABLE border ="0" class="coloured-rounded-region">
<TR><TD colspan=2><div id="name0" class="head">robot0</div><TD></TR>
<TR>
<TD>
<img src="./png/default.png">
</TD>
<TD>
<TABLE>
<TR><TD>idle time: </TD><TD><div id="it1">123</div></TD></TR>
<TR><TD>moving time: </TD><TD><div id="mt1">456</div></TD></TR>
<TR><TD>welding time: </TD><TD><div id="wt1">789</div></TD></TR>
</TABLE>
</TD>
</TR>
</TABLE>
</DIV>
<BR>
</fieldset>
</BODY>
</HTML>
pozdrawiam i czekam na pomoc jakiegoś Żeźnika.
W.P.