首页 新闻 会员 周边 捐助

ajax无刷新求值

0
悬赏园豆:15 [已解决问题] 解决于 2012-11-15 00:58

jquery ajax无刷新求得两日期之差(ksrq,jsrq)在乘以一个单价。是三个文本框,小弟新手,希望能贴出实现代码,坐等。

Lie to me的主页 Lie to me | 初学一级 | 园豆:132
提问于:2012-11-14 01:10
< >
分享
最佳答案
0

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了 楼主试试这个  日期可以倒着写,单价可以有小数

收获园豆:15
oppoic | 小虾三级 |园豆:770 | 2012-11-14 08:35

额,我想计算的不是两个数的和,有三个文本框,结束时间、天数、费用。开始时间我从数据库取出来,然后与结束时间的差填入填入天数的文本框,接着乘以单价填入费用文本框。十万火急,能再帮忙看看吗?整个是无刷新的结果显示

Lie to me | 园豆:132 (初学一级) | 2012-11-14 08:48

@Lie to me: 修改好了,你试试 代码在上面

oppoic | 园豆:770 (小虾三级) | 2012-11-14 09:32

@心态要好: 嗯,在试呢。

Lie to me | 园豆:132 (初学一级) | 2012-11-14 09:44

@Lie to me: 如果需要连接数据库取开始和结束时间也是在一般处理程序ashx里编码,也很简单,不会在发上来,我帮你搞定

oppoic | 园豆:770 (小虾三级) | 2012-11-14 09:48

@心态要好: 嗯。谢谢,在测试呢,呵呵

Lie to me | 园豆:132 (初学一级) | 2012-11-14 09:55

@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 | 园豆:132 (初学一级) | 2012-11-14 11:33

@Lie to me: 业务有点复杂 我也没你前前后后的代码, 况且action这东西我也没接触过,json就相对简单点了

你自己看看json的格式对不对,对的话,别alert弹data,用console.log(data)输出到firebug控制台看看就明白了,具体多调试吧。应该没那么麻烦的

oppoic | 园豆:770 (小虾三级) | 2012-11-14 12:36

@心态要好:嗯, 继续奋斗吧

Lie to me | 园豆:132 (初学一级) | 2012-11-14 12:50
其他回答(1)
0

这个直接前台就可以搞定,需要跟后台进行交互的才用到ajax

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-14 09:24

额,那前台是怎么搞定?能用DATEDIFF吗,麻烦给贴出些代码,刚学不会啊

支持(0) 反对(0) Lie to me | 园豆:132 (初学一级) | 2012-11-14 09:35

@Lie to me: 两日期之差 是要具体到哪一个部分? 毫秒,秒,小时 还是?  JS端没有现成的datedif函数,这个仅存在sql中

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-11-14 09:40

@chenping2008:要求不高, 只要具体到日期就可以了。。

支持(0) 反对(0) Lie to me | 园豆:132 (初学一级) | 2012-11-14 09:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册