madatanic
madatanic

Reputation: 1790

jquery ajax call return value

I have an asp.net application with a static page method. I'm using the below codes to call the method and get its returned value.

$.ajax({
       type: "POST",
       url: "myPage/myMethod",
       data: "{'parameter':'paramValue'}",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function(result) {alert(result);}                                
 });

What i got returned is [object Object].

Below is my static method. And I also have EnablePageMethods="true" EnablePartialRendering="true" in my ScriptManager.

    [WebMethod]
    [ScriptMethod]
    public static string myMethod(string parameter)
    {
         return "Result";
    }

Is there a way for me to get the returned value?

Upvotes: 4

Views: 23392

Answers (4)

codeandcloud
codeandcloud

Reputation: 55200

Its just that you are stuck at the .d that is introduced in the JSON response from ASP.NET 3.5. To quote Dave Ward,

If you aren’t familiar with the “.d” I’m referring to, it is simply a security feature that Microsoft added in ASP.NET 3.5’s version of ASP.NET AJAX. By encapsulating the JSON response within a parent object, the framework helps protect against a particularly nasty XSS vulnerability.

So just check whether .d exists and then unwrap it. Change your success function like this.

success: function(result) {
    var msg = result.hasOwnProperty("d") ? result.d : result;
    alert(msg );
}        

Upvotes: 4

jacob.toye
jacob.toye

Reputation: 1222

Try using Chrome developer tools or the firebug plugin from Firfox. Not sure if IE's developer tools lets you inspect the ajax calls?

The resulting string you are looking for is actually within the result object. You need to look at the d variable. I remember reading somewhere why this was, I think it is ASP.NET playing around :|

Try:

success: function(data) {alert(data.d);} 

c#

[WebMethod]
public static string GetTest(string var1)
{
    return "Result";
}

Hope this helps.

Upvotes: 6

madatanic
madatanic

Reputation: 1790

I found out the solution.

You can use parseJSON to get the result http://api.jquery.com/jQuery.parseJSON/

or change the datatype to html to see the actual value. http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

Thank you guys for your help.

Upvotes: 0

TheRealTy
TheRealTy

Reputation: 2429

What about this?

$.ajax({
     type: "POST",
     url: "myPage/myMethod?paramater=parameter",
     success: function(result) {
        alert(result);
     }                                
 });

Upvotes: 0

Related Questions