Lilz
Lilz

Reputation: 4089

Calling a webservice using JQuery

I am using this code from http://www.joe-stevens.com/2010/01/04/using-jquery-to-make-ajax-calls-to-an-asmx-web-service-using-asp-net/

function callWebService(address) {
 var result;
 $("#result").addClass("loading");
     $.ajax({
         type: "POST",
         url: address,
         data: "{}",contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: Success,
         error: Error
     });
}

function Success(data, status) {
 $("#result").removeClass("loading");
 $("#result").html(data.d);
 alert("Success");
}

function Error(request, status, error) {
 $("#result").removeClass("loading");
 $("#result").html(request.statusText);
 alert("Error");
}

I don't understand what is wrong with this code. It keeps returning "Error"

Upvotes: 0

Views: 291

Answers (3)

Mike Ohlsen
Mike Ohlsen

Reputation: 1900

A few suggestions based on some code I have doing this. But as others have said, make sure to manually look at the data going out and coming back. Your link references asp.net webservice, is that what you are calling since you didn't mention it.

  • Make sure the "address" url is of the form /location/page.asmx/methodname
  • You might need to pass the data to the success method in the call

    success: function(msg) {
        //msg is a json object, .d is the data field returned by asp.net
        if (msg.d.length > 0)
            ProcessData(msg.d);
        else
            HandleError('No data was returned.');
    },
     error: function() {
        HandleError('There was a problem calling the webservice.');
    }

Upvotes: 0

David Hoerster
David Hoerster

Reputation: 28701

Also make sure that the service URL that you're trying to access is in the same domain as your site. AJAX calls won't succeed if you cross domains, since browsers subject AJAX calls to the same domain policy. Can you also include the URL you're trying to access?

If you're trying to access a resource at a different domain, you may want to consider a JSONP request instead. See the jQuery AJAX documentation for a discussion of how to use JSONP.

I think if you combine knowing the URL you're trying to access along with Justin and mohlsen's suggestions, I think we can help.

Upvotes: 1

Justin Ethier
Justin Ethier

Reputation: 134255

Your code looks fine at first glance.

I recommend you use FireBug to attempt to isolate the problem further, as it will allow you to see the actual HTTP requests, POSTed data, etc...

Upvotes: 0

Related Questions