webform中 ajax调用后台方法(非webservice)
方法一:通过创建一个没有内容的窗体
后台:
public partial class Ajax_ShoppingCart : System.Web.UI.Page
{
bookdbDataContext bdc = Connect.bookdb();
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
if(Request.Form["method"]!=null)
{
switch (Request.Form["method"].ToString())
{
//添加商品至购物车
case "addToCart":
Response.Write(addToCart());
break;
//获得购物车
case "showCart":
Response.Write(showCart());
break;
//从购物车中删除商品
case "removeCart":
Response.Write(removeCart());
break;
//减少购物车中某一商品的数量
case "redCount":
Response.Write(redCount());
break;
//增加购物车中某一商品的数量
case "addCount":
Response.Write(addCount());
break;
default:
break;
}
}
}
} protected string tid
{
get
{
if (Request.Form["tid"] != null)
{
return Request.Form["tid"].ToString();
}
else
{
return "";
}
}
}
/// <summary>
/// 添加至购物车
/// </summary>
/// <returns></returns>
protected string addToCart()
{
int Count = ;
string message = string.Empty;
if (Request.Form["count"] != null)
{
Int32.TryParse(Request.Form["count"].ToString(), out Count);
}
if (Count > || Count < )
{
return JsonConvert.SerializeObject(new { status = , message = "书籍数量不对,不能超过5张哦" });
}
var tic = bdc.Book.SingleOrDefault(obj => obj.ID == Convert.ToInt32(tid));
if (tic != null)
{
Common.Book t = new Common.Book();
t.ID = tid;
t.Count = Count;
t.Name = tic.Name;
t.Price = tic.Price;
int result = ShoppingCartHelper.addCart(t);
switch (result)
{
case -:
return JsonConvert.SerializeObject(new { status = , message = "同一书籍不能购买超过5本哦!" });
case :
return JsonConvert.SerializeObject(new { status = , cart = ShoppingCartHelper.getShoppingCart(), message = "成功加入购物车!" });
default:
return null;
}
}
else
{
return JsonConvert.SerializeObject(new { status = , message = "不存在此书籍,请您重新选择!" });
}
} /// <summary>
/// 获得购物车
/// </summary>
/// <returns></returns>
protected string showCart()
{
return JsonConvert.SerializeObject(new { cart = ShoppingCartHelper.getShoppingCart() });
} /// <summary>
/// 从购物车中移除商品
/// </summary>
/// <returns></returns>
protected string removeCart()
{
int result = ShoppingCartHelper.removeCart(tid);
switch (result)
{
case -:
return JsonConvert.SerializeObject(new { status = , message = "离开太久啦,购物车已经空空了,您重新购买吧" });
default:
return JsonConvert.SerializeObject(new { status = , cart = ShoppingCartHelper.getShoppingCart() });
}
} /// <summary>
/// 减少购物车中某一件商品的数量
/// </summary>
/// <returns></returns>
protected string redCount()
{
int result = ShoppingCartHelper.reduceCart(tid);
switch (result)
{
case -:
return JsonConvert.SerializeObject(new { status = , message = "离开太久啦,购物车已经空空了,您重新购买吧" });
default:
return JsonConvert.SerializeObject(new { status = , cart = ShoppingCartHelper.getShoppingCart() });
}
} /// <summary>
/// 增加购物车中某一件商品的数量
/// </summary>
/// <returns></returns>
protected string addCount()
{
int result = ShoppingCartHelper.addCart(tid);
switch (result)
{
case -:
return JsonConvert.SerializeObject(new { status = , message = "离开太久啦,购物车已经空空了,您重新购买吧" });
default:
return JsonConvert.SerializeObject(new { status = , cart = ShoppingCartHelper.getShoppingCart() });
}
}
}
后台代码
前台:
function ShowNewList(d,t) {
var _url = "/Data_ajax/Ajax_ShoppingCart.aspx";//Data_ajax只是一个文件夹名字,随便怎么取,但是,该页面的aspx界面中,不能出现空格和内容,就是一个空的界面什么对没有
var obj = {
method: "addToCart",
Id: d //在后台可以用Reques.Form["Id"]获取参数值
};
jQuery.ajax({
type: "POST",
url: _url,
data: obj,
dataType: "json",
success: function (x) {
ShowNewList1(x);
}
});
}
前台代码
购物车类:
namespace Ipow.CMS.Helper
{
public static class ShoppingCartHelper
{
/// <summary>
/// 获取购物车
/// </summary>
/// <returns></returns>
public static shoppingCart getShoppingCart()
{
shoppingCart cart = new shoppingCart();
if (HttpContext.Current.Session["cart"] != null)
{
cart = HttpContext.Current.Session["cart"] as shoppingCart;
}
return cart;
} /// <summary>
/// 加入购物车
/// </summary>
/// <param name="tic">门票</param>
/// <param name="CategoryID">门票类别</param>
/// <returns></returns>
public static int addCart(ticket tic, int CategoryID)
{
int result = ;
shoppingCart cart = getShoppingCart();
if (cart.CategoryID == )
{
cart.CategoryID = CategoryID;
cart.TotalPrice = tic.ticketPrice * tic.ticketCount;
List<ticket> list = new List<ticket>();
list.Add(tic);
cart.tickets = list;
}
else
{
if (cart.CategoryID != CategoryID && cart.tickets.Count() != )
{
//不同园区门票不能加入同一个购物车
result = -;
}
else
{
ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tic.ticketID);
//如果已存在同样的门票,则增加门票数量
if (t1 != null)
{
if (t1.ticketCount + tic.ticketCount <= )
{
t1.ticketCount += tic.ticketCount;
cart.TotalPrice += tic.ticketPrice * tic.ticketCount;
cart.CategoryID = CategoryID;
}
else
{
//门票数量超过5张
result = -;
}
}
//不存在则添加
else
{
cart.TotalPrice += tic.ticketPrice * tic.ticketCount;
cart.CategoryID = CategoryID;
cart.tickets.Add(tic);
}
}
}
HttpContext.Current.Session["cart"] = cart;
return result;
} /// <summary>
/// 从购物车中移除商品
/// </summary>
/// <param name="tic">要移除的商品ID</param>
/// <returns></returns>
public static int removeCart(string tid)
{
shoppingCart cart = getShoppingCart();
if (cart.CategoryID == )
{
//离开太久啦,购物车已经空空了,您重新购买吧
return -;
}
else
{
ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tid);
if (t1 != null)
{
//重新计算总价
cart.TotalPrice -= t1.ticketPrice * t1.ticketCount;
//从购物车中移除
cart.tickets.Remove(t1);
}
}
HttpContext.Current.Session["cart"] = cart;
return ;
} /// <summary>
/// 减少购物车中某一商品的数量
/// </summary>
/// <param name="tic">要减少数量的商品id</param>
/// <returns></returns>
public static int reduceCart(string tid)
{
shoppingCart cart = getShoppingCart();
if (cart.CategoryID == )
{
//离开太久啦,购物车已经空空了,您重新购买吧
return -;
}
else
{
ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tid);
if (t1 != null)
{
if (t1.ticketCount > )
{
//从购物车中减少某一商品的数量
t1.ticketCount--;
//重新计算总价
cart.TotalPrice -= t1.ticketPrice;
}
}
}
HttpContext.Current.Session["cart"] = cart;
return ;
} /// <summary>
/// 增加购物车中某一商品的数量
/// </summary>
/// <param name="tic">要减少数量的商品id</param>
/// <returns></returns>
public static int addCart(string tid)
{
shoppingCart cart = getShoppingCart();
if (cart.CategoryID == )
{
//离开太久啦,购物车已经空空了,您重新购买吧
return -;
}
else
{
ticket t1 = cart.tickets.SingleOrDefault(obj => obj.ticketID == tid);
if (t1 != null)
{
if (t1.ticketCount < )
{
//从购物车中减少某一商品的数量
t1.ticketCount++;
//重新计算总价
cart.TotalPrice += t1.ticketPrice;
}
}
}
HttpContext.Current.Session["cart"] = cart;
return ;
}
}
/// <summary>
/// 购物车
/// </summary>
public class shoppingCart
{
/// <summary>
/// 门票类别ID
/// </summary>
public int CategoryID { get; set; }
/// <summary>
/// 总价
/// </summary>
public decimal? TotalPrice { get; set; }
/// <summary>
/// 门票列表
/// </summary>
public List<ticket> tickets { get; set; }
}
/// <summary>
/// 门票
/// </summary>
public class ticket
{
public string ticketID { get; set; }
/// <summary>
/// 门票名称
/// </summary>
public string ticketName { get; set; }
/// <summary>
/// 门票数量
/// </summary>
public int ticketCount { get; set; }
/// <summary>
/// 门票价格
/// </summary>
public decimal? ticketPrice { get; set; }
}
}
购物车类
方法二:在方法上加[Webservice],方法必须是静态,static
后台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services; namespace WebApplication1.BookManage
{
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } [WebMethod]
public static string SayHello(string str,string str2)
{
return str+str2;
}
}
}
1
前台:
Js中:
$(function () {
$("#btnOK").click(function () {
$.ajax({
type: "post",
url: "test.aspx/SayHello",
data: "{'str':'我是','str2':'XXX'}",
contentType: "application/json",
dataType: "json",
success: function (r) {
alert(r.d);
},
error: function (e) {
alert("错误是:" + e.responseText);
}
});
return false;
});
}) 界面:
<form id="form1" runat="server">
<input type="button" value="调用后台方法" id="btnOK"/>
</form>
2
方法三:一般处理程序
前台:
JS:
function strToJson(str) {
var json = eval('(' + str + ')');
return json;
}
$("#btnone").click(function () {
$.ajax({
type:"post",
url: "/Ajax_Data/Handler.ashx",
data: {method:"a"},
dataType: "text",
success: function (r) {
var obj = strToJson(r);
alert(obj.name+" "+obj.age);
},
error: function (e) {
alert("错误:"+e.responseText);
}
});
}); 界面:
<input type="button" value="使用一般处理程序调用后台" id="btnone" />
one
后台:
/// <summary>
/// Handler 的摘要说明
/// </summary>
public class Handler : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
char charmehod = Convert.ToChar(context.Request.Params["method"]);
context.Response.ContentType = "text/plain"; switch (charmehod)
{
case 'a':
context.Response.Write("{name:'魔女小溪',age:'22' }");
break;
case 'b':
context.Response.Write("document.write(\"This is b samply\");");
break;
default:
break;
}
context.Response.Flush(); } public bool IsReusable
{
get
{
return false;
}
}
}
two
webform中 ajax调用后台方法(非webservice)的更多相关文章
- java 中使用ajax调用后台方法注意事项
java 中使用ajax调用后台方法注意事项,后台方法一定要加@ResponseBody jQuery.validator.addMethod("checkRuleName",fu ...
- asp.net如何在前台利用jquery Ajax调用后台方法
一 :最近因为帮同事开发项目使用到了asp.net,而我又想实现Ajax异步请求....从网上查询了一下资料之后,原来在asp.net中利用Ajax调用后台方法同样很简单,为了便于自己以后查看,特将此 ...
- Asp.net中JQuery、ajax调用后台方法总结
通过上一篇文章实例的实现,整个过程当中学习到很多知识点,了解了Jquery.Ajax在asp.net中的运用,加以总结,其实原理都是一样的,理解了一种,其他的注意很少的区别就可以了.灵活运用: 1.有 ...
- webform中ajax.ajaxMethod使用方法
前言 dll文件 如果还没有ajax.dll文件,就先下载一个来 引用 将ajax.dll添加到项目引用中:在VS的解决方案资源管理器中右键点击项目名称--"添加项目引用"--浏览 ...
- asp.net core 的 razor pages 如何使用ajax调用后台方法
Razor 是一种允许您向网页中嵌入基于服务器的代码(Visual Basic 和 C#)的标记语法. 当网页被写入浏览器时,基于服务器的代码能够创建动态内容. 在网页加载时,服务器在向浏览器返回页面 ...
- C#实现简易ajax调用后台方法
在当前WEB当中,有些人都会抛弃asp.net的服务器控件,转而使用ajax来进行数据的交互和存储. 当我们大量使用ajax的时候,对于新手而言,肯定会创建很多的ashx或aspx页面,通过拼接参数, ...
- jquery + ajax调用后台方法
前台js: var parameter = ""; $.ajax({ type: "POST", //提交方式 url: "Default.aspx/ ...
- asp.net core 通过ajax调用后台方法(非api)
1. 在Startup.cs文件中添加: services.AddMvc(); services.AddAntiforgery(o => o.Heade ...
- asp.net ajax 调用后台方法
js代码 <form id="form1" runat="server"> <script language=javascript type= ...
随机推荐
- Jenkins中集成python,支持参数生成Makefile文件
#!/usr/bin/env python import os print os.getenv("BUILD_NUMBER") print os.getenv("uuid ...
- jQuery 数据滚动(上下)
setInterval(function() { jq('.sjbg02 li:first').animate({ 'height': '0', 'opacity': '0' }, 'slow', f ...
- ecshop后台增加模块菜单项详细教程(图文)
有的时候我们会在后台增加新的功能,菜单项是一个程序的入口,是必不可少的,如何在后台增加菜单项呢,大家可以参考下面的教程: 例如:想在后台左侧的菜单栏的"促销管理"下添加一个&q ...
- HBase集群安装
1.HBase的机群搭建过程(在原来的hadoop0上的HBase伪分布基础上进行搭建)1.1 集群结构,主节点(hmaster)是hadoop0,从节点(region server)是hadoop1 ...
- Mysql命令-以NULL做where条件过滤时应该写 IS NULL;
以NULL做where条件过滤时应该写 IS NULL;SELECT * FROM pet WHERE death IS NULL; SELECT * FROM pet WHERE death IS ...
- iOS中FMDB和GCD剖析
转载至:http://www.cocoachina.com/industry/20130819/6821.html 英文链接:https://github.com/ccgus/fmdb 由于FMDB是 ...
- 玩Mega8 智能充电器-12. 终于实现-dV检测(转)
源:http://blog.chinaunix.net/uid-10701701-id-91873.html 2010.1.3 5:30终于补齐了. 电池充电的-dv 的检测系列图片请移步: http ...
- ignite学习笔记
1.一个Ignite节点可以从命令行启动,可以用默认的配置也可以传递一个配置文件.可以启动很多很多的节点然后他们会自动地发现对方. 2.Ignite只需要一个ignite-core强依赖,通常你还需要 ...
- 程序员 10Tips
理解技术债务 技术债务就像信用卡一样,会有很高的利息率,时间越长,修复所花的代价就越大,程序员对这个要有深刻的认识.同时团队应该培养一种保证设计质量的文化,应当鼓励重构.同时也应当鼓励其它有关代码质量 ...
- Permission denied: user=xxj, access=WRITE, inode="user":hadoop:supergroup:rwxr-xr-x
在windows中运行eclipse时报错Permission denied: user=xxj, access=WRITE, inode="user":hadoop:superg ...