3

Making my first steps in trying to use all these technologies together.. I'm having some toubles..
Here is my Server side:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string simplestMethod()
{
  return "Simplest method returned";
}

And here is my client side:

 $(document).ready(function(){
   $("a").click(function(event){     
      $.ajax({
      type: "POST",
      url: "http://localhost:53346/d2/TAPI.asmx/simplestMethod",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (data) {
       alert(data.d);
      },
      error: function (XMLHttpRequest, textStatus, errorThrown) {
       alert("Error Occured!" +" | " + XMLHttpRequest +" | " + textStatus +" | " + 
       errorThrown );
      }
   });
  });
 });

The result is an alert that says:
Error Occured! | [object XMLHttpRequest] | parseerror | undefined.
What parsing failed and why?
I should mention that calling the WS method directly does work.
Thanks a lot!

Oren A
  • 5,870
  • 6
  • 43
  • 64
  • What's the URL of the page? If it's running from a different host and/or port you won't get a response, as it'll be blocked by the same origin policy. – Nick Craver Sep 06 '10 at 10:05

2 Answers2

4

Your code looks like good with one suspected place: url. You should replace url to something like "TAPI.asmx/simplestMethod" or "/d2/TAPI.asmx/simplestMethod".

Moreover if you want study to how to call web method with parameters or return more complex data from the web method look at How do I build a JSON object to send to an AJAX WebService? and asmx web service, json, javascript/jquery?, Can I return JSON from an .asmx Web Service if the ContentType is not JSON?. How to decode error messages from the exception inside of web method see Get xhr object in vb.net while ajax calling fails.

Community
  • 1
  • 1
Oleg
  • 220,925
  • 34
  • 403
  • 798
  • No luck. changing the URL gives the same error, and when I change the error and success functions, I just get an alert that says "error". But thanks! – Oren A Sep 06 '10 at 12:29
  • @Oren A: You have textStatus=**parseerror**. So you should first of all show `xhr.responseText` with `alert(xhr.responseText);` – Oleg Sep 06 '10 at 12:35
  • @Oren A: By the way I tested your code. If work without any problem. So your **real** error is somewhere outside the code which you posted in your question. – Oleg Sep 06 '10 at 12:37
  • I've been reading.. Could it be that I should add something to the web.config? (I'm using .NET 4.0) What other places in the code are relevant? Thanks. – Oren A Sep 06 '10 at 12:46
  • @Oren A: To make you easy to compare your solution with one working I created a simple application in .NET 4.0 (Visual Studio 2010) which do the same what you describe in your question. You can download full code from http://www.ok-soft-gmbh.com/ForStackOverflow/SimpleWebService.zip – Oleg Sep 06 '10 at 13:11
  • Thanks a lot Oleg. This task got the best of me, but I'll get back to it... Until than, I really can't ask for a better answer. Cheers! – Oren A Sep 06 '10 at 13:35
2

when you want use WebMethod in jquery , you must add this tag to web.config

<configuration>
  <system.web>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>
  </system.web>
</configuration>

good luck

msn
  • 31
  • 1