您的位置:首页 > Web前端 > JQuery

JQuery中ajax,get方法在asmx中的使用

2017-10-11 15:31 465 查看
喜大普奔,今天终于完成了一个月前就想完成的一个代码实现。就是在点击一个按钮后禁用按钮,弹出正在操作的提示框,执行完事件后再启用按钮。

以前的想法是Ajax和aspx联用,这样,省页面,也不用对后台代码进行修改,后来发现,有一些类在这个联用中不能使用,在这个过程里,方法是static类型的,我这里有一个发送邮件的操作,使用了Server.MapPath方法和file类的一些方法,就不能使用了。在请教了一个老同事后,决定采用Ajax和asmx的联用。

基本思路是,先点击一个按钮,弹出一个弹窗提示,按钮disable,Ajax传输数据到asmx处理,asmx处理成功后返回0、1的标识,Ajax再接受标识后显示按钮和关掉弹窗。

弹窗是使用了公司的一个弹窗,不是自己写的。

HTML页面

<input type="button" id="btsave" onclick="Submitcheck()" value="提交/Save" class="btn-primary" style="text-decoration: none; height: 25px;" />


js

function Submitcheck() {

if (document.getElementById("txquantity").value == "") {
alert("Please fill in the Quantity(请填写购买数量)");
return false;
}

$("#btsave").hide();

$.Dialog('Searchff', null, null, 520, 80);
var userid = document.getElementById("iuserid").value;
var username = document.getElementById("iusername").value;

$.ajax({
type: "POST",
url: "WebService1.asmx/Submit",
//contentType: "application/json; charset=utf-8",
//dataType: "json",
dataType: "xml",
data: {
iuserid: userid,
iusername: username//只传递了部分字段

},
//async: false,
success: function (result) {
var my = $(result).find("string").text();//很重要的解析
if (my == "1") {
$.DialogClose('Searchff', null, null, 520, 80);
alert("下单成功,我们会尽快帮您处理/Order Success");
$("#btsave").show();
} else {
$.DialogClose('Searchff', null, null, 520, 80);
alert("下单失败,请联系客服/Order failure,Contact customer service");
$("#btsave").show();
}
},
error: function () {
alert("Exception(系统异常)");
}
});
}


contentType: "application/json;charset=utf-8",//有这条报“请求格式无效

这个可能后asmx返回的是xml格式相冲突吧。

//async: false,是否异步,有这句话会不能success结果处理的。

asmx页面
[WebMethod]
public string Submit(string iuserid, string iusername)
{
string userid = iuserid;
string returnstring = "1";
try
{
#region 获取orders信息
Orders orders = new Orders();
orders.orderid = userid + DateTime.Now.ToString("yyyyMMddHHmmss");
orders.userid = Convert.ToInt32(userid);
orders.username = iusername;
#endregion
#region 插入数据库
bool adflag = new OrdersBLL().Add(orders);
if (adflag)
{
//购买成功后清除部分填写信息
//txquantity.Value = "";
//tbremark.Text = "";
// return;
}
else
{
returnstring = "0";
return returnstring;
}
#endregion
#region 组装邮件
var strFileCn = File.ReadFile(Server.MapPath("order_model.html"), "utf-8");
strFileCn = strFileCn.Replace("#orderid#", orders.orderid);
strFileCn = strFileCn.Replace("#username#", orders.username);
var att = new string[1];
att[0] = "";
var strRocFileName = "Adjunct/ROC/" + orders.orderid + ".htm";
strRocFileName = Server.MapPath(strRocFileName);
try
{
File.WriteFile(strRocFileName, strFileCn, "utf-8");
}
catch (Exception)
{
return "0";
}
string strsendto = iemail; //应该是发送给固定的邮箱,需要提供
if (File.Net_Email(strsendto, "", "", strFileCn, "iTourbagSoftCard Commodity order sheet.", att, "", "") == "1")
{
File.SysLogAdd(1, iusername, 1, "订单提交成功,系统自动发送邮件,我们会尽快帮您处理" + strsendto, ip);
}
#endregion
}
catch (Exception ex)
{
returnstring = "0";
return returnstring;
}

return returnstring;
}
代码不全,只是提示怎么使用。

一番辛苦,忙这个差不多忙了半天,好多东西都要百度,也差点想半途放弃,冒出了两个想法,一个是asmx传值和获取值的时候那么写,是因为不会写JSON,二是注释async: false这句话,刚开始发现它在的时候,处理显示的效果好像是点击按钮,等按钮事件处理完在弹出提示的,突然想起这句话好像和异步有关,就注释点试试看的,没想到还真成了。还是学的不好啊。还有将解析result的时候,试了好多方法,发现都没有结果,现在回想应该是方法错了,当时使用的方法基本上是解析JSON的,这里asmx返回的是xml,然后百度js使用Ajax和asmx,看到JQuery中ajax,get方法在ashx,aspx,asmx中的使用一文,发现了自己的问题(我转载了这篇文章),及时改了过来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: