Click here to Skip to main content
14,599,188 members
Rate this:
Please Sign up or sign in to vote.
Hello everyone,

I have made a simple webservice in asp.net, my service.asmx file contains webmethod as :
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void HelloWorld() {
      JavaScriptSerializer serializer = new JavaScriptSerializer();
        string jsonData = serializer.Serialize("Hello World");
        Context.Response.ContentType = "application/json; charset=utf-8";
        Context.Response.Write(jsonData);
        //return jsonData;
}


This webservice returns me output of "Hello World"

Now i have hosted this webservice on IIS and accessing this webservice from localhost also works very fine.

Now i have created one website in asp.net in which there is a button which invokes this webservice through AJAX and JSON

The code is :

      function invokeService() {

          $.ajax({
              url: "http://localhost/SampleService/Service.asmx/HelloWorld",
              type: "POST",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function (msg) {
                  alert(msg);
              },
              error: function () {
                  alert("this error");
              }
          });
          return false;
      }
<input type="button" id="btnInvokeService" value="Invoke Service" onclick ="invokeService();" />

Now the invokeService method is called of jSON but the output i am returning is "null" value..

I have also tried to change webservice webmethod with returning string value but the end result is same.

Please help me how can i achieve output in JSON alert as Hello world.. Please help me

Thanking you in advance.

Krunal
Posted

1 solution

Rate this:
Please Sign up or sign in to vote.

Solution 1

I would recommend changing your AJAX call URL to this:
url: "Service.asmx/HelloWorld",


The reference to the local host would not bode well when published to IIS.

[EDIT]

Change your service to this:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld() {
      JavaScriptSerializer serializer = new JavaScriptSerializer();
        string jsonData = serializer.Serialize("Hello World");
        Context.Response.ContentType = "application/json; charset=utf-8";
        Context.Response.Write(jsonData);
        return jsonData;
}
   
v2
Comments
krunalpanchalN 21-Mar-14 10:22am
   
Hi Richard,

Now it tells 'this error' it means it is going to error function..Please help
Richard C Bishop 21-Mar-14 10:28am
   
What is "this error"?
krunalpanchalN 21-Mar-14 10:25am
   
I have also tried SampleService/Service.asmx/HelloWorld, but still says 'this error'
krunalpanchalN 21-Mar-14 10:29am
   
It is just simple alert message if it reaches in error function....it means that there is some error... i have also checked the error status and it is "500" but the webservice is working very fine...
Richard C Bishop 21-Mar-14 10:41am
   
Change the error function to this:
error: function (jqXHR){
alert(jqXHR.responseText);
}

This will tell you what the actual error is.
krunalpanchalN 21-Mar-14 10:48am
   
It says No webservice found..but the webservice is present on localhost..

ANd if i type url : "http://localhost/SampleService/Service.asmx/HelloWorld".. it doesnt return any error instead it goes inside success function but returns null as output.

Please suggest
Richard C Bishop 21-Mar-14 11:15am
   
I just figured it out I think. You can keep your URL as you have it, but your HelloWorld() method does not return anything. Therefore, you would get null as the value in your AJAX response. You need to return a string value and change the method signature to do so.
krunalpanchalN 21-Mar-14 11:20am
   
I tried same thing...but still shows null

now my webmethod looks like :

public string HelloWorld() {
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonData = serializer.Serialize("Hello World");
Context.Response.ContentType = "application/json; charset=utf-8";
//Context.Response.Write(jsonData);
return jsonData;
}

and the url in JSON looks like : http://localhost/SampleService/Service.asmx/HelloWorld

Still facing same problem..

Please help
Richard C Bishop 21-Mar-14 11:26am
   
Put a break-point at the instantiation and jsonData. See if the value you are assigning it is actually "Hello World" or if it is getting null.
krunalpanchalN 21-Mar-14 11:39am
   
I am executing the webservice and it is showing me output as "Hello World"...but it is not getting the same at JSON...
Richard C Bishop 21-Mar-14 11:43am
   
Try in your success function:
alert(msg.d)
krunalpanchalN 21-Mar-14 11:57am
   
Tried same thing.. but doesnt shows any alert.. i mean alert(msg.d) doesnt gives any alert..

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100