jQuery, JSON, and ASP.NET
A few months ago, I demonstrated how to use ASP.NET’s JSON capabilities. Lately, I’ve been demonstrating how to use jQuery. Both use a considerable amount of JavaScript so if there is some way we could eliminate or reduce the amount of code we had to load, performance would naturally increase.
Fortunately, there is.
What stays the same
You are still going to create a JSON enabled web service just like you did in the earlier article by giving the web service class the attribute, “ScriptService.” You remember, this is what enables the web service to return JSON.
What is different
You will not, however, be including this block in your ASPX file:
<asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference path="~/WebService.asmx" /> </Services> </asp:ScriptManager>
You might still need the ScriptManager if you are using MS-AJAX on your page, but if you don’t have any other MS-AJAX on your page, you can remove the entire block of code.
In the jQuery for your page, your code will look something like this:
$.ajax({
type: "POST",
url: "WebService.asmx/Add",
data: "{a:1,b:4}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
alert(result.d);
}
});
You can get the full documentation for the $.ajax() global method here:
http://docs.jquery.com/Ajax/jQuery.ajax
A few things that need to be pointed out here:
- For this to work, type must be “POST.”
- url: is the name of the asmx file followed by a slash followed by the name of the web service method you want to call.
- data: is a JSON name/value pair list of all the parameters in the form of {parametername: parameterValue[,...]} if there are no parameter just use “{}”. Don’t use “” or your code will not work.
- contentType and dataType tell jQuery we are working with JSON.
- The function pointed to by success will be called when the request has finished successfully, it will pass in a variable of type json. The d property holds the return value.
- If the return value is a structure or class d will have properties hanging off of it specifying
- type information of the structure or class
- property for each property/variable in the structure or class.
You could take most of that AJAX call and turn it into some sort of helper function, but even if you don’t the amount of code you will end up loading using this method is significantly less than what you would load using both together.
Other post in jQuery
- jQuery - The Man, The Myth, The Legend - October 8th, 2008
- Getting started with jQuery and ASP.NET - October 15th, 2008
- jQuery - Explaining Last Week's Code - October 21st, 2008
- Friday Books - "Learning jQuery" - October 24th, 2008
- jQuery Simple Selectors - October 28th, 2008
- Friday Books - "jQuery in Action" - October 31st, 2008
- jQuery Selectors - Looks just like CSS - November 6th, 2008
- VS2008 SP1 Hotfix to Support "-vsdoc.js" IntelliSense Doc Files - November 11th, 2008
- jQuery Looks like XPath - November 12th, 2008
- jQuery - class manipulation - November 19th, 2008
- jQuery - Events - December 2nd, 2008
- Host jQuery at Google (with Intellisense support) - December 10th, 2008
- jQuery - Calling Your Own Functions - December 16th, 2008
- Friday Books - jQuery Reference Guide - December 19th, 2008
- jQuery - Creating Plug-ins - December 23rd, 2008
- jQuery - Loading Partial Content - December 30th, 2008
- jQuery - Positioning Elements - January 6th, 2009
- AjaxToolKit TabControl Disabled Tab - January 12th, 2009
- jQuery, JSON, and ASP.NET - January 15th, 2009
- Review of the MDC at NYC - January 21st, 2009
- jQuery - Retrieving HTML Fragments - January 22nd, 2009
- jQuery GUI - Drag - February 3rd, 2009
- jQuery - Drop - February 12th, 2009
- jQuery UI - Resizable w/ ASP.NET Themes - February 18th, 2009
- jQuery, bgiframe and IE6 z-order hacks - February 19th, 2009
- jQuery - Sliders (scrollbars to the rest of us) - March 4th, 2009
- jQuery - Using Slider as a Scrollbar - March 12th, 2009
- jQuery - Auto Scrolling the Slider - March 23rd, 2009
- Live Presentation of jQuery - March 23rd, 2009
- Just a Week Away! - April 7th, 2009
- jQuery Tabs - April 9th, 2009
- jQuery Demos From Last Tuesday’s Presentation - April 16th, 2009
- jQuery – Accordion - May 6th, 2009
- CustomValidationControl and jQuery - May 11th, 2009
- Mixing ASP.NET, jQuery and JSON - May 12th, 2009
- jQuery Progressbar - May 20th, 2009
- jQuery – Dialog - June 2nd, 2009
- jQuery – Modal Dialog - June 9th, 2009
- Does jQuery Make Us Lazy? - June 18th, 2009
- jQuery Dialog – With Validation Controls - June 25th, 2009
- jQuery – Date Picker - July 2nd, 2009
- jQuery Splitter - July 21st, 2009
- jQuery Expand/Collapse Using Head Tags - October 15th, 2009
- Do you Need My Help? - November 18th, 2009
- Flash to jQuery - November 30th, 2009
- JQuery, Cufon, and Dynamic Content - December 1st, 2009
- jQuery, Each() and Async Gets - December 2nd, 2009
- jQuery and ASP.NET UpdatePanel - January 6th, 2010
- jQuery 1.4 Released - January 15th, 2010
- jQuery Cookbook - July 15th, 2010
- AddThis.com From E-Mail - May 25th, 2011
Is the post requirement a limitation of the jQuery instance or the ASMX?
If you were to add:
Could a GET request work?
Oops, Hopefully this snippet will work better:
If you add:
<webServices>
<protocols>
<add name=”HttpGet” />
<add name=”HttpPost” />
</protocols>
</webServices>
to the web.config file, will a GET request work in this case?
limitation of asmx.. security reasons.
[...] jQuery, JSON, and ASP.NET (Dave M. Bush) [...]
[...] jQuery, JSON, and ASP.NET Example how to call ASP.NET web service from client side using Ajax call with jQuery [...]
you can configure your webservice to allow “get’s” but switched off by default as stated for security reasons