Jag vill från en (gammal) asp-web anropa en asmx. Den här artikeln beskriver hur du gör det jag tror du är ute efter för hand i javascript. Ännu enklare är att använda ett javascript-bibliotek som har färdiga ajaxmetoder, såsom jQuery. Tack för svaret, engagemanget. Nåt sånt härnt borde funka. Mutatis mutandis: rätt url i din webservice och de parametrar den vill ha. Ngt blir fel. Va? GPS? Ursäkta sen respons, har varit lite annat..... Använder du någon av IE8 eller IE9? Använder IE11..useService
Detta genom att använda ett javascript.
Hur kan jag från javascript anropa en asmx?
Jag har testat nedan:
service.useService("http://webadressen.asmx?wsdl", "HelloWorldService");
Men får följande fel:
"Egenskapen eller metoden UseService stöds inte av objektet."
Jag måste göra ngt grundläggande fel, vad?
Så grundläggande frågan är,
Hur kan jag från javascript anropa en asmx?
Hela websidan ser ut så här:
<!DOCTYPE html>
<html>
<body onload="Func2()" id="service"">
<p id="demo"></p>
<script>
window.onload = getLocation;
setTimeout("location.reload(true);", 10000);
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude;
//alert("hej1a");
Func2()
//alert("hej1b");
}
function Func2(){
try {
alert("hej2")
service.useService("http://webadressen.asmx?wsdl", "HelloWorldService");
alert("hej3");
//service.HelloWorldService.callService("testfunc");
alert("hej4");
}
catch (r) {
//alert("hej error")
alert("hej error" + r)
}
}
function ShowResult(){
alert(event.result.value);
}
</script>
</body>
</html>
/ MikaelSv: .useService
Sv:.useService
Java är för min del = kaffe, jag dricker inte kaffe.
Ajax är ett rengöringsmedel för att göra rent diskbänken.
Så där har du mina referenser.
Om vi tar det från början.
Går det att göra det jag vill???
Dvs jag vill när man öppnar min websida, hämta användarens ungefärliga position.
Jag vill sedan anropa min webservice för att lagra denna position i en databas.
/ MSv: .useService
<html>
<body onload="sendLocation();">
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script>
function sendLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
sendMessageToServer("GEOLOCATION_LOOKUP_SUCCESSFUL", position.coords);
}, function(err) {
sendMessageToServer("GEOLOCATION_LOOKUP_FAILED: " + err.message + " " + err.code);
});
}
else {
sendMessageToServer("GEOLOCATION_NOT_SUPPORTED");
}
}
function sendMessageToServer(message, coords) {
coords = coords || { latitude: "unknown", longitude: "unknown" };
jQuery.support.cors = true; // Needed only if the service is hosted on a different domain
$.post("http://www.posttestserver.com/post.php?dir=geolocationtest", // TODO: Replace with proper webservice url
{
message: message,
latitude: coords.latitude,
longitude: coords.longitude
})
.error(function(e){
alert("error sending coordinates: " + e.statusText);
});
}
</script>
</body>
</html>
Sv:.useService
Detta kräver att GPS finns och är påslagen.
Jag vill positionera utan GPS i klienten.
Mitt exempel överst i denna tråd hämtar ungefärlig position utan att ha GPS aktiverad (fråga mig inte hur..., men det fungerar, och är bra nog).
/ MSv: .useService
I bägge fallen används
navigator.geolocation.getCurrentPosition();
Vad är det som händer när du säger att något går fel?
Sv:.useService
<!DOCTYPE html>
<html>
<body onload="sendLocation();">
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script>
setTimeout("location.reload(true);", 10000);
function sendLocation() {
alert("1")
if (navigator.geolocation) {
alert("2")
navigator.geolocation.getCurrentPosition(function(position) {
alert("3")
sendMessageToServer("GEOLOCATION_LOOKUP_SUCCESSFUL", position.coords);
alert("4")
}, function(err) {
alert("e1" & err.message)
sendMessageToServer("GEOLOCATION_LOOKUP_FAILED: " + err.message + " " + err.code);
});
}
else {
sendMessageToServer("GEOLOCATION_NOT_SUPPORTED");
}
}
function sendMessageToServer(message, coords) {
coords = coords || { latitude: "unknown", longitude: "unknown" };
alert(coords.latitude)
alert(coords.longitude)
jQuery.support.cors = true; // Needed only if the service is hosted on a different domain
$.post("http://localhost/xxxxxxxxxxxx.asmx?addpos", // TODO: Replace with proper webservice url
webservice url
{
//message: message,
//latitude: coords.latitude,
//longitude: coords.longitude
})
.error(function(e){
alert("error sending coordinates: " + e.statusText);
});
}
</script>
</body>
</html>
Övan ger alert 1,2,3,latitud,longitud, *error sending coordinates: Error: åtkomst nekad",4
Dvs allt ser bra ut, förutom att jag inte kommer åt webservicen.
Webservicen fungerar, är åtkomlig.
Teori om orsaken??
Sv: .useService
I så fall kan det vara orsaken. Prova då att lägga in följande efter jquery inkluderats:
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.2/jquery.xdomainrequest.min.js"></script>
Alternativt byt webbläsare :)
Sv:.useService
Du menar efter
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
?
/ M