最近几天老古董项目需要改造一些页面,用ajax调用后台方法,为了不增删太多东西,就利用了Ajax+.aspx的调用方法
一:一般格式的POST数据
前台代码:
$.ajax({
type: 'POST',
data: "{\"itemCode\":\"" + 参数1+ "\",\"rateConfig\":\"Rate\"}",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "/BaseInfo/SUSRateConfigEdit.aspx/GetSUSRateCofig",
success: function (result) {
var json = JSON.parse(result.d);
var html = "";
$.each(json, function (index, vaule) {
html += "<tr index=\"" + index + "\">";
html += "<td style=\"border: 1px solid #DDDDDD; width: 50%\"><input id=\"txtSName_" + index + "\" type=\"text\" readonly=\"readonly\" onclick=\"SelectContract(this)\" class=\"form-control\" value=\"" + vaule.SName + "\" /><input type=\"hidden\" id=\"hidSName_" + index + "\" value=\"" + vaule.SolutionID + "\" /></td>";
html += "<td style=\"border: 1px solid #DDDDDD; width: 15%\"><input id=\"txtSalesRate_" + index + "\" type=\"text\" class=\"form-control\" value=\"" + vaule.SalesRate + "\" /></td>";
html += "<td style=\"border: 1px solid #DDDDDD; width: 15%\"><input id=\"txtCostRate_" + index + "\" type=\"text\" class=\"form-control\" value=\"" + vaule.CostRate + "\" /></td>";
html += "<td style=\"border: 1px solid #DDDDDD; width: 15%\"><a style=\"cursor:pointer\" onclick=\"del(this)\">删除</a></td>";
html += "</tr>";
});
$("#tabRate").append(html);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("错误[" + XMLHttpRequest.status + "]," + errorThrown + "。");
}
});
后台代码:
[WebMethod]
public static string GetSUSRateCofig(string itemCode, string rateConfig)
{
DataTable ds = null;//调用获取数据方法
string result = string.Empty;
foreach (DataRow item in ds.Rows)
{
result += "{\"SName\":\"" + item["SolutionName"] + "\",\"SalesRate\":\"" + item["SalesRate"] + "\",\"CostRate\":\"" + item["CostRate"] + "\",\"SolutionID\":\"" + item["SolutionID"] + "\"},";
}
if (!string.IsNullOrEmpty(result))
{
result = result.Substring(0, result.Length - 1);
}
return "[" + result + "]";
}
注意:1、ajax中post的data数据必须与后台方法的参数名字一样
二:POST对象数据
前台代码:
function Save() {
var tips = Check();
if (tips == "") {
$("#btnSave").attr("disabled", "disabled");
//拼接如下格式{A:'1',B:'2',C:[{D:'1',F:'2'},{D:'3',F:'4'}]}
var suConfigRate = {};//对象
var itemCode = $("#MainContentPlaceHolder_txtCode").val();
suConfigRate.itemCode = itemCode;
var giMode = $("#MainContentPlaceHolder_ddlMode").val();
suConfigRate.mode = giMode;
var susID = $("#MainContentPlaceHolder_txtSUSNameId").val();
suConfigRate.susID = susID;
//获取所有增加的行
var sRates = [];//数组
suConfigRate.sRate = sRates;
var rows = $("#tabRate tr[index]");
$.each(rows, function (index, value) {
//获取行
var sRate = {};
var tds = $(this).find("input");
$.each(tds, function (i) {
var id = $(this).attr("id");
if (id.indexOf("hidSName_") != -1) {
sRate.soluID = $(this).val();
}
if (id.indexOf("txtSalesRate_") != -1) {
sRate.salesRate = $(this).val();
}
if (id.indexOf("txtCostRate_") != -1) {
sRate.costRate = $(this).val();
}
});
sRates.push(sRate);
});
$.ajax({
url: "/BaseInfo/SUSRateConfigEdit.aspx/Save",
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{\"ss\":" + JSON.stringify(suConfigRate) + "}",
success: function (data) {
if (data.d == "ok") {
alert("成功");
} else {
alert("失败");
}
}
})
} else {
alert(tips);
}
}
后台代码:
/// <summary>
/// 数据的保存
/// </summary>
/// <param name="ss"></param>
/// <returns></returns>
[WebMethod]
public static string Save(SuConfigRate ss)
{
if (ss != null)
{
//所有数据先删再增
DsCAP_SUSRate ds = new DsCAP_SUSRate();
DateTime now = DateTime.Now;
foreach (SRate item in ss.sRate)
{
DsCAP_SUSRate.CAP_SUSRateRow dr = ds.CAP_SUSRate.NewCAP_SUSRateRow();
dr.ItemID = Guid.NewGuid();
dr.ItemCode = ss.itemCode;
dr.GICMode = ss.mode;
dr.SUSID = ConvertHelper.ConvertStringToGUID(ss.susID);
dr.SolutionID = ConvertHelper.ConvertStringToGUID(item.soluID);
dr.SalesRate = item.salesRate;
dr.CostRate = item.costRate;
dr.UpdateTime = now;
dr.UpdateUserID = LoginHandler.CurrentUser.UserInfo.UserID;
dr.UpdateUserName = LoginHandler.CurrentUser.UserInfo.UserName;
ds.CAP_SUSRate.AddCAP_SUSRateRow(dr);
}
bool result = ServiceHelper.CAPSUSService.UpdateSUSRate(ds, ss.itemCode);
if (result)
return "ok";
else
return "no";
}
return "ok";
}
类:
public class SuConfigRate
{
/// <summary>
/// Code
/// </summary>
public string itemCode { set; get; }
/// <summary>
/// GICMode
/// </summary>
public string mode { set; get; }
/// <summary>
/// SUS的ID
/// </summary>
public string susID { set; get; }
public List<SRate> sRate = new List<SRate>();
}
public class SRate
{
/// <summary>
/// SolutionName
/// </summary>
public string soluName { set; get; }
/// <summary>
/// SolutionName的ID
/// </summary>
public string soluID { set; get; }
/// <summary>
/// saleRate
/// </summary>
public decimal salesRate { set; get; }
/// <summary>
/// costRate
/// </summary>
public decimal costRate { set; get; }
}