I have the following web service;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
It's stock standard with no alterations to the class decorators.
I have this jQuery method;
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
url: webMethod,
success: function(msg){ alert(msg.d); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
It's a post action because later on I need to post data to it.
When I execute the jQuery I get a "No transport" error returned.
One thing I should also mention is that the jQuery is stored in a simple HTML file on my machine and the WebService is running on my machine also.
There is no code behind on the HTML page it's simply a web page and not a c# project or anything.
Can anyone please point me in the right direction here?
Add this: jQuery.support.cors = true;
It enables cross-site scripting in jQuery (introduced after 1.4x, I believe).
We were using a really old version of jQuery (1.3.2) and swapped it out for 1.6.1. Everything was working, except .ajax() calls. Adding the above line fixed the problem.
If your jQuery page isn't being loaded from http://localhost:54473 then this issue is probably because you're trying to make cross-domain request.
Update 1 Take a look at this blog post.
Update 2 If this is indeed the problem (and I suspect it is), you might want to check out JSONP as a solution. Here are a few links that might help you get started:
I had the same error on a page, and I added these lines:
<!--[if lte IE 9]>
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script>
<![endif]-->
and it finally works for me ;) no more error in IE9.