For example, I wrote this script in a HTML file:
<script src="../Scripts/jquery-1.7.js" type="text/javascript"></script>
<script type="text/javascript">
function postJson() {
var m = {
myname: 'abc',
myage: 10
// add more properties here
};
var url = 'post_json.aspx';
$.post(url, JSON.stringify(m), function (d) {
if (d && d == 'ok') {
alert('ok');
}
else {
alert('failed');
}
});
}
</script>
Below is the "post_json.aspx" which you may use Handler (.ashx) to avoid the ASP.NET page life cycle.
using System.Web.Script.Serialization;
public partial class post_json_post_json : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string json_text = this.Request.Form[0];
JavaScriptSerializer js = new JavaScriptSerializer();
CInfo my_obj = (CInfo)js.Deserialize(s, typeof(CInfo));
this.Response.Write("ok");
this.Response.End();
}
}
This is the data class that I'm using in this demo:
public class CInfo
{
public string myname { get; set; }
public int myage { get; set; }
}
By using this technique, you will be achieving the following:
- Easy to maintain the JavaScript coding by replacing the data parameter in the $.post() with a stringify data in JSON format.
- Easy to maintain the code in ASP.NET - this is because you just need to declare a class which contains all the properties which is same as the data in JSON format. You may declare a property with other class type as well and also supporting object array.