实现功能:前端html页面,填入相应的预约信息提交到后台返回并返回信息
1.前端ajax代码
<script type="text/javascript">
$(function () {
//表单提交
$("#btnSubmit").click(function () {
var txtname = $("#txtname").val();
var txttel = $("#txttel").val();
var txtOrderDepartment = $("#txtOrderDepartment").val();
var txtOrderTime = $("#txtOrderTime").val();
var txtOrderDescription = $("#txtOrderDescription").val();
if (txtname == null || txtname == "") {
alert("用户名不能为空!");
}
else
{
$.ajax({
type: "POST",
url: "../../tools/submit_ajax.ashx?action=order_add",
dataType: "json",
data: { txtname: txtname, txttel: txttel, txtOrderDepartment: txtOrderDepartment, txtOrderTime: txtOrderTime, txtOrderDescription: txtOrderDescription },
success: function (data, msg) {
if (data.status == 1) {
alert(data.msg);
}
else {
alert(data.msg);
}
}
});
}
});
});
</script>
2.Ashx文件中相应代码
public void ProcessRequest(HttpContext context)
{
//取得处事类型
string action = DTRequest.GetQueryString("action");
switch (action)
{
case "comment_add": //提交评论
comment_add(context);
break;
case "comment_list": //评论列表
comment_list(context);
break;
}
}
#region 用户预约=====================================
private void order_add(HttpContext context)
{
DTcms.Model.article_comment model = new Model.article_comment();
model.user_name = DTRequest.GetFormString("txtname").Trim();//姓名
model.reply_content = DTRequest.GetFormString("txttel").Trim();
model.add_time = DateTime.Now;//添加预约的时间
model.reply_time = Convert.ToDateTime(DTRequest.GetFormString("txtOrderTime").Trim());
model.content = DTRequest.GetFormString("txtOrderDepartment").Trim()+" | "+DTRequest.GetFormString("txtOrderDescription").Trim();//预约描述
//DTRequest.GetFormString("txtOrderDepartment").Trim()+预约科室\
model.channel_id = 27;
string userip = DTRequest.GetIP();
DTcms.BLL.article_comment bll = new BLL.article_comment();
//保存注册信息
if (siteConfig.commentstatus == 0)
{
context.Response.Write("{\"status\":0, \"msg\":\"系统故障,暂停预约!\"}");
return;
}
//设置对应的状态
int newId = bll.Add(model);
if (newId < 1)
{
context.Response.Write("{\"status\":0, \"msg\":\"系统故障,请联系网站管理员!\"}");
return;
}
else
{
context.Response.Write("{\"status\":1, \"url\":\"" + new Web.UI.BasePage().linkurl("index") + "\", \"msg\":\"预约成功!\"}");
}
return;
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------后续更新----------------------------------------------------------------------------------------------------
距离上段博客已有两年未更新了,今日遇到了ajax中的一个问题,解决后省了好大的麻烦,于是乎贴出来供大家参考~!
前端ajax代码如下:
上述代码中,在一个ajax中将一个div标签的内容填充,其中填充的内容又调用另外一个ajax方法获取可得。之前没有写属性:async:false;即默认async属性默认为true.
也就是说在执行这个ajax的时候不管服务器端有没有返回到前端值都将往下执行,故在ajax执行完毕后不管有没有值,在ajax括号外,这个变量一直为空。
加过这个async为false之后,问题得到解决。
官方解释如下:
async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程和ajax块后面的脚本(另一个线程)
当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),知道function1()部分执行完毕。