Powalczylem troche. Kod zrodlowy strony (index.html):
<script type="text/javascript" src="core.js"></script>
<script type="text/javascript">
function zmienZawartosc(){
var url ="http://localhost:50948/WebSite3/WebServices/WebService.asmx/pobierzProbke";
startPOSTRequest(url,'',onComplete,onEnd);
}
function onComplete(responseText, responseXML){
alert(responseXML);
//alert(responseXML.selectSingleNode("//pobierzProbkeResult").text);
/*if(document.getElementById('eee')){alert('hh');
var eee = document.getElementById("RSSContent");
eee.innerHTML = responseText;
}*/
}
function onEnd(){
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Delay Load User Control Example</title>
</head>
<body onload="zmienZawartosc();">
<p id="eee"></p>
</body>
</html>
Kod zrodlowy pliku core.js:
var XMLHttpRequestObject;
function getXMLHttpRequestObject(){
var wersje = new Array(
"MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"
);
try{
return new XMLHttpRequest();
}
catch(e){
for(var indeks in wersje){
try{
return new ActiveXObject(wersje[indeks]);
}
catch(e){
}
}
return null;
}
}
function startPOSTRequest(url,params,onComplete,onEnd){
XMLHttpRequestObject = getXMLHttpRequestObject();
if(XMLHttpRequestObject){
XMLHttpRequestObject.open("POST",url,true);
XMLHttpRequestObject.onreadystatechange = function(){
if(XMLHttpRequestObject.readyState == 4){
if(XMLHttpRequestObject.status == 200){
var responseXML = XMLHttpRequestObject.reponseXML;
var responseText = XMLHttpRequestObject.responseText;
onComplete(responseText,responseXML);
}
else{
alert(XMLHttpRequestObject.status);
}
delete XMLHttpRequestObject;
XMLHttpRequestObject = null;
onEnd();
}
else{
alert(XMLHttpRequestObject.readyState);
}
}
XMLHttpRequestObject.send(params);
}
else{
write("Wystąpił błąd aplikacji, prosimy spróbować później");
}
}
Patrzac w konsole Firebuga widac, ze zadanie sie wykonuje, konczy sie ze statusem 200 (czyli wszystko jest ok). Dolozylem sobie pare alertow w core.js w bloku odpowiedzialnym za wywolanie funkcji onComplete(). Doszedlem do tego, ze on sie w ogole nie wywoluje. Odpowiedz dla zadania z Firebuga
Błąd parsowania XML: nie znaleziono elementu Obszar: moz-nullprincipal:{8103b448-df11-4248-9633-c88ab491a673} Numer linii: 1, kolumna 1:
^
Zrobilem sobie dla testu taki oto skrypt (test.html):
<form action='http://localhost:50948/WebSite3/WebServices/WebService.asmx/pobierzProbke' method="POST">
<table cellspacing="0" cellpadding="4" frame="box" bordercolor="#dcdcdc" rules="none" style="border-collapse: collapse;">
<tr>
<td></td>
<td align="right"> <input type="submit" value="wyslij" class="button"></td>
</tr>
</table>
</form>
Po zatwierdzeniu formularza otrzymuje odpowiedz w xmlu z webserwisu.
Pytanie za 100 punktow. Czemu zwykly formularz dziala, a zadanie ajaxowe juz nie?
Edit: chyba juz wiem.Strone wywoluje poprzez protokol file:// - a serwer smiga na localhoscie, wiec to nie bedzie dzialac.