Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / December 2007

Tip: Looking for answers? Try searching our database.

how do u call async webmethod from javascript!??!!

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
jojoba@gmail.com - 12 Dec 2007 00:39 GMT
Hello to all!

I have a fairly simple webservice running in asp.net ajax under c# (vs
2008).
I built the service and it runs just dandy when i test it by itself in
visual studio.
However, to make it work, i had to break up the webmethod into the
BeginXXX, EndXXX model
as per http://msdn2.microsoft.com/en-us/library/aa480516.aspx
But now, i can no longer call this method from javascript (since to
use the BeginXXX, EndXXX, you must remove the [WebMethod] from the
orig method)
Specifically, in javascript i originally would be able to call the
service via
"WebService_speech.GenerateSpeechDataForText"
But after adding in the BeginXXX, and EndXXX, i no longer know how to
call the service from javascript
I feel like i'm so close, but i just dont know how to call my service.
Any ideas?

here's the code snippet from the service

WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WebService_speech : System.Web.Services.WebService
{
   public System.Speech.Synthesis.SpeechSynthesizer TtsVoice;

   public WebService_speech()
   {
       //Uncomment the following line if using designed components
       //InitializeComponent();
   }

   public delegate string GenerateSpeechDataForTextAsyncStub(string
text);

   //meat of the method (heavy lifting done here)
   //where the actual speech data is extracted from the text
   public SpeechData GenerateSpeechDataForText(string text)
   {
       //do speech stuff here
       //i removed the processing code
       return SpeechData_;
   }

   //state monitor for the GenerateSpeechDataForText service
   public class MyState
   {
       public object previousState;
       public GenerateSpeechDataForTextAsyncStub asyncStub;
   }

   //start the GenerateSpeechDataForText method
   [WebMethod]
   public IAsyncResult BeginGenerateSpeechDataForText(string text,
AsyncCallback cb, object s)
   {
       GenerateSpeechDataForTextAsyncStub stub = new
GenerateSpeechDataForTextAsyncStub(GenerateSpeechDataForText);
       MyState ms = new MyState();
       ms.previousState = s;
       ms.asyncStub = stub;
       return stub.BeginInvoke(text, cb, ms);
   }

   //end the GenerateSpeechDataForText method
   [WebMethod]
   public SpeechData EndGenerateSpeechDataForText(IAsyncResult call)
   {
       MyState ms = (MyState)call.AsyncState;
       return ms.asyncStub.EndInvoke(call);
   }
}

Thx a million,
matt
bruce barker - 12 Dec 2007 05:27 GMT
the async webmethod is only used from .net programs. with .net you use a
proxy stub that is generated to call the webservice. the aync methods
are part of the stub (that runs in the caller), and allow specification
of a completion delegate.

javascript calls the webservice directly (socket to port) and is always
async (the a in ajax). when javascript calls a webservice, you always
supply a completion delegate.

so to do async from javascript you call the standard webservice method.

-- bruce (sqlwork.com)

> Hello to all!
>
[quoted text clipped - 74 lines]
> Thx a million,
> matt
jojoba@gmail.com - 12 Dec 2007 17:35 GMT
hi bruce,
thank you for responding.

I apologize for not being clear enough on my original post.
When i dont use the BeginXXX and EndXXX methodology, i can call the
webservice from javascript no problem (i.e. the method "
GenerateSpeechDataForText").
But when i use the BeginXXX and EndXXX methodology, javascript no
longer knows of that method name.
Isnt that bizarre?
Any thought,
Thanks,
matt

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.