10

I want to call a webservice from javascript.

This is my code:

 var method="GetStock";
 var url = "http://www.mywebsite.ro/ServiceGetStock.asmx";
 $.ajax({
 type: "POST",
 url: url + "/GetStock",
 data: "{variant_id='1'}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: OnSuccessCall,
 error: OnErrorCall
 });
 function OnSuccessCall(response) {
 alert(response.d);
 }
 function OnErrorCall(response) {
 alert(response.status + " " + response.statusText);
 }

My ServiceGetStock.asmx code:

 [WebMethod]
 public string GetStock(int variant_id)
 {
 try
 {
 ProductVariant variant = ProductVariantManager.GetProductVariantByID(variant_id);
 return variant.Stock.ToString();
 }
 catch (Exception ex)
 {
 return ex.Message;
 }
 }

I got the error message:

POST http://www.mywebsite.ro/ServiceGetStock.asmx/GetStock 500 (Internal Server Error)

[UPDATE]

I forgot to mention that I added in webconfig of project(with webservice) because I got the error:

XMLHttpRequest cannot load http://www.mywebsite.ro/ServiceGetStock.asmx/HelloWorld. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http:// localhost:11300' is therefore not allowed access.

 <httpProtocol>
 <customHeaders>
 <add name="Access-Control-Allow-Origin" value="*" />
 <add name="Access-Control-Allow-Headers" value="Content-Type" />
 </customHeaders>
 </httpProtocol>
asked Jan 22, 2014 at 14:38
13
  • What is the method signature for your GetStock Commented Jan 22, 2014 at 14:39
  • Use Fiddler (fiddler2.com) to emulate the POST request (using the Composer tab) and take a look at your response - this will tell you specifically the detailed error message you're actually receiving. Commented Jan 22, 2014 at 14:41
  • 500 is a server-side error. Have you debugged the server-side code? Also, "{id='1'}" isn't valid json, and id != variant_id. I'd imagine that matters. Commented Jan 22, 2014 at 14:42
  • Try {"variant_id":"1"} Commented Jan 22, 2014 at 14:42
  • Ok. I changed id into variant_id. It was my mistake. But I got the same error. Commented Jan 22, 2014 at 14:44

2 Answers 2

15

Ok guys. I found the problem. When an ASMX file is created, you must read all comments lines. To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.

 //[System.Web.Script.Services.ScriptService]

So the GetStock function is:

 [WebMethod]
 [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
 public string GetStock(string variant_id)
 {
 SendEmail.SendErrorMail("in"+ variant_id);
 try
 {
 ProductVariant variant = ProductVariantManager.GetProductVariantByID(Convert.ToInt32(variant_id));
 return variant.Stock.ToString();
 }
 catch (Exception ex)
 {
 return ex.Message;
 }
 }

and the Ajax code is:

 var url = "http://www.mywebsite.ro/ServiceGetStock.asmx";
 $.ajax({
 type: "POST",
 url: url + "/GetStock",
 data: "{variant_id:'1'}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: OnSuccessCall,
 error: OnErrorCall
 });
 function OnSuccessCall(response) {
 alert(response.d);
 }
 function OnErrorCall(response) {
 alert(response.status + " " + response.statusText);
 }

Problem solved! Thanks all for tips.......

answered Jan 22, 2014 at 16:36
Sign up to request clarification or add additional context in comments.

4 Comments

Going directly to this: http://myserver:123/WServ/EDt.asmx/HelloWorld displays the xml. But when I do the above I already get a 0 error. Any idea why?
@Si8 what error do you get? Show us the error message.
Do you have to use absolute url? Relative link is not working out for you?
0

use dataType: "jsonp", instead of dataType: "json", jsonp is for cross domian webservice. hope it will help.

answered Dec 6, 2017 at 5:39

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.