html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>ajax计算两个数之和</title> <script src="scripts/jquery-1.7.2.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $("#btn").click(function () { $.get("calculate.ashx", { date1: $("#date1").val(), date2: $("#date2").val(), unitprice: $("#unitprice").val() }, function (data) { $("#sum").val(data); }, "text"); }) }) </script> </head> <body> 日期1:<input type="text" id="date1" /> - 日期2: <input type="text" id="date2" /> * 单价:<input type="text" id="unitprice" /> = <input type="text" id="sum" /> <input type="button" id="btn" value="计 算" /> </body> </html>
ashx:
<%@ WebHandler Language="C#" Class="calculate" %> using System; using System.Web; public class calculate : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; DateTime date1 = Convert.ToDateTime(context.Request.QueryString["date1"]); DateTime date2 = Convert.ToDateTime(context.Request.QueryString["date2"]); Decimal unitprice = Convert.ToDecimal(context.Request.QueryString["unitprice"]); context.Response.Write(Math.Abs((date1 - date2).Days) * unitprice); } public bool IsReusable { get { return false; } } }
ok了 楼主试试这个 日期可以倒着写,单价可以有小数
额,我想计算的不是两个数的和,有三个文本框,结束时间、天数、费用。开始时间我从数据库取出来,然后与结束时间的差填入填入天数的文本框,接着乘以单价填入费用文本框。十万火急,能再帮忙看看吗?整个是无刷新的结果显示
@Lie to me: 修改好了,你试试 代码在上面
@心态要好: 嗯,在试呢。
@Lie to me: 如果需要连接数据库取开始和结束时间也是在一般处理程序ashx里编码,也很简单,不会在发上来,我帮你搞定
@心态要好: 嗯。谢谢,在测试呢,呵呵
@Lie to me: 盆友,还在吗,这用的是action和json,整了一个多小时木有突破,你看看还有什么问题,唉 真心不会啊
$(document).ready(function () {
$("#txtXJRQ").click(function () {
$.get("/Api/2ywbl/lrqj.ashx", {
xjrq: $("#txtXJRQ").val(),
ksrq: $("#ksrq").val()
}, function (data) {
alert(data);
//$("#txtYTHSF").val(ts);
// $("#txtSJQJTS").val(fy);
}, "text");
});
});
switch (action)
{case "calculate":
CalculateRq(context);
break;}
public void CalculateRq(HttpContext context)
{
DateTime xjrq = Convert.ToDateTime(context.Request.QueryString["xjrq"]);
DateTime ksrq = Convert.ToDateTime(context.Request.QueryString["ksrq"]);
string ts = Convert.ToString(Math.Abs((xjrq - ksrq).Days));
string fy = Convert.ToString(Math.Abs((xjrq - ksrq).Days)*10);
ArrayList dic = new ArrayList();
Dictionary<string, object> drow = new Dictionary<string, object>();
drow.Add(ts, fy);
dic.Add(drow);
var result = new
{
aaData = dic
};
JavaScriptSerializer serializer = new JavaScriptSerializer();
// 通过JavaScriptSerializer对象的Serialize序列化为["value1","value2",...]的字符串
string jsonString = serializer.Serialize(result);
context.Response.Write(jsonString);
}
@Lie to me: 业务有点复杂 我也没你前前后后的代码, 况且action这东西我也没接触过,json就相对简单点了
你自己看看json的格式对不对,对的话,别alert弹data,用console.log(data)输出到firebug控制台看看就明白了,具体多调试吧。应该没那么麻烦的
@心态要好:嗯, 继续奋斗吧
这个直接前台就可以搞定,需要跟后台进行交互的才用到ajax
额,那前台是怎么搞定?能用DATEDIFF吗,麻烦给贴出些代码,刚学不会啊
@Lie to me: 两日期之差 是要具体到哪一个部分? 毫秒,秒,小时 还是? JS端没有现成的datedif函数,这个仅存在sql中
@chenping2008:要求不高, 只要具体到日期就可以了。。