‘Webservice’ is undefined effor with ASP.NET AJAX
Saturday, August 2nd, 2008I came across an annoying problem when playing with the ASP.NET Ajax extensions earlier today. I was trying to call a script-enabled web-service but kept getting a javascript error telling me my service was undefined. It’s been a month or so since I’ve used MS Ajax and needed a refresher.
Some background:
- My project namespace is ajaxTest
- My webservice class is helloTest
- My webservice function is helloWorld
I enabled the web service using the [System.Web.Script.Services.ScriptService()] attribute
I put the script manager code block in place and included a reference to the service.
<asp:ScriptManager ID=”ScriptManager1″ runat=”server”>
<Services>
<asp:ServiceReference Path=”helloTest.asmx” />
</Services>
</asp:ScriptManager>
I then created some javascript to call the web service
function testScriptService()
{
var tmp = helloTest.helloWorld(onResult, onTimeout, onError);
}
It was at this point I received the “helloTest is undefined” message.
A quick search on google revealed two websites which helped me. The first had the right answer (in my situation). Strangely, the second website had a slightly different solution which seems to have helped a number of people, but I was unable to figure out why (I didn’t work for me).
So, the solution that worked:
You need to fully qualify the javascript with the namespace of your webservice.
Namespace.Class.Function >> ajaxTest.helloTest.helloWorld
The solution which didn’t work for me but has worked for others is to use the following structure:
Namespace.Services.Class.Function >> ajaxTest.Services.helloTest.helloWorld
No idea why the difference, but hey.
Credit where credit’s due, thanks to Omen’s blog and Ryan at Solutek.