Mixing ASP.NET, jQuery and JSON
I received the following question last week:
I am building a web application… I have a form with asp.net server control textbox and dropdownlist…
how can I send this to the server without postback and send me back message if the process of updating the database is successful
You’ll remember from our previous post on web services, json and asp.net that we needed to create a web service that specifically was set up to return json AND we needed to pass the parameters as a json string.
You can refer to that post for more information.
But now we are taking it from the realm of demos to something a bit more real-world. That is, we have data in our form that we need to get back to the web service.
For simplicity, I’m using a simple HTML form. But if you are using an ASPX form with ASP.NET controls, you can still do the same thing. The only difference will be that you’ll want to set the CssClass property on the controls to unique values so that you can select them in jQuery using a CSS selector instead of a Rule selector like I’ll be doing.
Here’s my basic HTML
<p>Text Field: <input id="Text1" name="Text1" type="text" /><br /> DropDown: <select name="Select1" id="Select1" name="D1"> <option value="1">Thing One</option> <option value="2">Thing Two</option> </select><input id="Button1" type="button" value="button" /><br /> </p>
The trick in passing the data to the Web Service, other than telling the web service we are working in JSON, is that we need to pass JSON to it for the parameter list.
In fact while I was working on this demo, I wasted about an hour trying to get the demo to work simply because I forgot that the data parameter was supposed to be a string.
So DO NOT WRITE YOUR CODE LIKE THIS!
data: {a : $('#Text1').val() ,
b: $('#Select1').val() },
Instead, write it like THIS
data: "{a : '" + $('#Text1').val() + "'," + "b: '" + $('#Select1').val() + "' }",
The rest is elementary.
You need a web service with a webmethod
[WebMethod] public string YourFunction(string a, string b) { return a + ":" + b; }
And you need to wire up an event to send the data. The following code has the wire up and the subsequent call to the web service
function clickHandler() { $.ajax({ type: "POST", url: "ASPnetJsonWebService.asmx/YourFunction", data: "{a :'" + $('#Text1').val() + "' , " + "b: '" + $('#Select1').val() + "' }", contentType: "application/json; charset=utf-8", dataType: "json", success: function(result) { alert(result.d); }, error: function(request, status, errorThrown) { alert(status); } }); }
You’ll see that my web service isn’t putting the data in the database as the question referenced, but that’s basic database handling code that you can handle in a number of different ways that we’ve talked about previously on this blog. Click the tag “dal” for more post about the data access layer.
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
Other Related Items:
Dallas Cowboys Let's Go LightLet your team spirit show with the Flashing "Let's Go" Stoplight. Has rotating lenses so it can be hung horizontally or vertically. Or, put it on your desk. Measures 16 inches tall by 6 inches wide.
Peas, Chana Dal - 12 Oz Bag EachWhen cooked they lose their shape and are excellent for thickening soups and stews. Typically used with curry, they can be seasoned with many different herbs.
Pro ASP.NET MVC FrameworkSteven Sanderson has seen the ASP.NET MVC framework mature from the start, so his experience, combined with comprehensive coverage of all the new f... Read More >










[...] Mixing ASP.NET, jQuery and JSON (Dave M. Bush) [...]
The same code above doesn’t work. the wiring up event you put the code that you said specifically “DO NOT WRITE YOUR CODE LIKE THIS!”, yet you put it in your example. Also, when I attempt to run this, I get an error: undefined. I’ve created a webservice and made a public function. But doesn’t work.
Ooops. Don’t know how that happened. It’s been fixed.