ASP. net ajax client access to WebService (2)

Source: Internet
Author: User

What we want to talk about today is that the client accesses WebService-serialization and deserialization.

I heard serialization in ASP. NET AJAX for the first time.

====================================== Demo1 ==================== ==========

Demo1 demonstrates using JSON characters on the client.

Add reference first

<Asp: ScriptManager ID = "ScriptManager1" runat = "server">
<Services>
<Asp: ServiceReference Path = "ColorService. asmx" InlineScript = "true"/>
</Services>
</Asp: ScriptManager> check how Javascript calls WebService. The data type here is Complex. <Script language = "javascript" type = "text/javascript">
Function ReverseColor ()
{
// Serialized JSON characters
VaR color = {"red": 50, "green": 100, "blue": 200 };
Colorservice. Reverse (color, onsucceeded );
}

Function onsucceeded (result)
{
Alert (String. format (
"Red: {0} \ nGreen: {1} \ nBlue: {2 }",
Result. Red,
Result. Green,
Result. Blue ));
}
</Script>

Var color = {"Red": 50, "Green": 100, "Blue": 200}. This line is to assign the color type to the JSON character.
A little unaccustomed! But it doesn't matter. The next Demo is a familiar method, and onSucceeded is a successful callback function.

Let's see how ColorService is defined:

[ScriptService]
Public class ColorService: System. Web. Services. WebService
{
[WebMethod]
[GenerateScriptType (typeof (Color)] // verify 2_ComplexTypeProxy.aspx
Public Color Reverse (Color color)
{
Return new Color (
(Byte) (255-color. Red ),
(Byte) (255-color. Green ),
(Byte) (255-color. Blue ));
}

}

It turns out that the Reverse method receives a Color parameter and returns a Color type, which is indeed very simple.
Finally, let's take a look at how the Color class is defined:

Public class Color
{
Public Color (){}

Public Color (byte red, byte green, byte blue)
{
This. Red = red;
This. Green = green;
This. Blue = blue;
}

Public byte Red;

Public byte Green;

Public byte Blue;
}

This is no longer necessary. Let's go directly to Demo2.

====================================== Demo2 ==================== ==========

Demo2 describes how to generate complex types of proxies on the client and view the Javascript code on the page.

<Script language = "javascript" type = "text/javascript">
Function ReverseColor ()
{

// Mark before the Service method, [GenerateScriptType (typeof (Color)]
Var color = new ComplexType. Color ();
Color. Red = 50;
Color. Green = 100;
Color. Blue = 200;
ColorService. Reverse (color, onSucceeded );
}

Function onSucceeded (result)
{
Alert (String. format (
"Red: {0} \ nGreen: {1} \ nBlue: {2 }",
Result. Red,
Result. Green,
Result. Blue ));
}
</Script>

 

Aha, var color = new ComplexType. Color ();
Color. Red = 50;
Color. Green = 100;
Color. Blue = 200;

We are familiar with this writing method. However, if you write this method, you need to make the following annotations on the Service end:
[GenerateScriptType (typeof (Color)]. You can mark it before the class or the method name (recommended)
Just like the following code:

[ScriptService]
Public class ColorService: System. Web. Services. WebService
{
[WebMethod]
[GenerateScriptType (typeof (Color)] // verify 2_ComplexTypeProxy.aspx
Public Color Reverse (Color color)
{
Return new Color (
(Byte) (255-color. Red ),
(Byte) (255-color. Green ),
(Byte) (255-color. Blue ));
}

}

============================== Demo3 ============== ====================

Okay, let's make a small change to Demo2.

<Script language = "javascript" type = "text/javascript">
Function ReverseColor ()
{

// Mark before the Service method, [GenerateScriptType (typeof (Color)]
Var color = new Object ();
Color. _ type = ComplexType. Color;
Color. Red = 50;
Color. Green = 100;
Color. Blue = 200;
Colorservice. Reverse (color, onsucceeded );
}

Function onsucceeded (result)
{
Alert (String. format (
"Red: {0} \ nGreen: {1} \ nBlue: {2 }",
Result. Red,
Result. Green,
Result. Blue ));
}
</Script>

 

Others remain unchanged, and the same effect can be achieved.

Demo4 describes how to call a Table-type Service on the client; Demo5 describes how

Call a Service with a loop call. These two demos are complex and will not be described here. You can refer to the relevant materials.

Or Email me, and I will give you an answer. (Email: gfreesky@gmail.com)

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.