views:

994

answers:

1

Ok, so I created a test project just to verify that jQuery AJAX works with asp.net service, and it does no problems. I used a default HelloWorld service created in VS studio. I am calling the service via jQuery like this:

in Default.aspx:

<script language="javascript" type="text/javascript">
    $(document).ready(function() {

        //test web service
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "TestService.asmx/HelloWorld",
            data: "{}",
            dataType: "json",
            success: function(msg) { alert(msg);},
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                debugger;
            }
        });
    });
</script>

in TestService.asmx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebServiceTestWitJQuery
{
    /// <summary>
    /// Summary description for TestService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class TestService : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

I then proceeded and copied everything exactly as it is in my project and it does not work. I get a 500 server error.

I verified following:

  1. web.configs identical
  2. pages identical
  3. service class identical
  4. jquery ajax call identical
  5. I can navigate to http://localhost:3272/TestService.asmx?op=HelloWorld and webservice works fine.

What else?

+1  A: 

Figured it out. When not sure what is happening use Fiddler. It clearly shows that server could not create an instance of the service class because it was in the wrong namespace. I had R# disabled and did not notice that I did not change the namespace of the service. Problem solved.

epitka
Also, if you service is in subfolder, you have to specify full path.
epitka