如何使用 jquery ajax 将表单数据插入 Web 服务
how to insert form data into a web service with jquery ajax
我正在尝试将 Ionic 移动应用程序与已部署的 Web 服务进行映射。
我想插入表单数据,以便可以通过 .NET asmx Web 服务在数据库中对其进行更新。 ajax代码如下:
$.ajax({
url: 'http://localhost:5096/AndroidWebService.asmx/InsrtTblEmp', type: "POST",
contentType: "application/json",
data: //what to do here?,
dataType: "json",
success: function (result) {
var jEl = $("#divMessage");
jEl.html(result.d).fadeIn(1000);
setTimeout(function () { jEl.fadeOut(1000) }, 5000);
},
error: function (xhr, status) {
alert("An error occurred: " + status);
}
});
这是 asmx 网络服务的代码:
[WebMethod]
//public string InsrtTblEmp(int EmpId, string LeaveType, DateTime DateFrom, DateTime DateTo, float? LeaveDays, string Remarks)
public string InsrtTblEmp(TblEmpLeaveDat TblEmpDat)
{
string msg ="";
try
{
var obj = new tblEmpLeave()
{
EmpId = TblEmpDat.EmpId,
LeaveAvailType = TblEmpDat.LeaveAvailType,
DateFrom = TblEmpDat.DateFrom,
DateTo = TblEmpDat.DateTo,
LeaveDays = TblEmpDat.LeaveDays,
Remarks = TblEmpDat.Remarks
};
Db.tblEmpLeaves.Add(obj);
Db.SaveChanges();
msg = "Record insert successfully";
}
catch(Exception ex)
{
msg = ex.Message;
}
return msg;
}
}
现在据我了解,Web 服务只接受对象数据类型。第一个问题:我可以在 jquery 中创建对象吗?
按原样使用此 Web 服务会更有效率吗?或者我应该修改它以便它采用硬编码字符串值而不是对象。
如有任何帮助,我们将不胜感激。
如果表单中的字段名称与模型中的字段名称相同,您可以这样做:
var frm = $(document.myform);
var formData = JSON.stringify(frm.serializeArray());
$.ajax({
url: 'http://localhost:5096/AndroidWebService.asmx/InsrtTblEmp',
type: "POST",
contentType: "application/json",
data: formData,
dataType: "json",
success: function (result) {
var jEl = $("#divMessage");
jEl.html(result.d).fadeIn(1000);
setTimeout(function () { jEl.fadeOut(1000) }, 5000);
},
error: function (xhr, status) {
alert("An error occurred: " + status);
}
});
如果表单名称不同,您可以像这样在 formData 中设置数据:
var formData= {
EmpId: $('.input1').val(),
LeaveAvailType: $('.input2').val(),
DateFrom: $('.input3').val(),
DateTo: $('.input4').val(),
LeaveDays: $('.input5').val(),
Remarks: $('.input6').val()
};
我正在尝试将 Ionic 移动应用程序与已部署的 Web 服务进行映射。
我想插入表单数据,以便可以通过 .NET asmx Web 服务在数据库中对其进行更新。 ajax代码如下:
$.ajax({
url: 'http://localhost:5096/AndroidWebService.asmx/InsrtTblEmp', type: "POST",
contentType: "application/json",
data: //what to do here?,
dataType: "json",
success: function (result) {
var jEl = $("#divMessage");
jEl.html(result.d).fadeIn(1000);
setTimeout(function () { jEl.fadeOut(1000) }, 5000);
},
error: function (xhr, status) {
alert("An error occurred: " + status);
}
});
这是 asmx 网络服务的代码:
[WebMethod]
//public string InsrtTblEmp(int EmpId, string LeaveType, DateTime DateFrom, DateTime DateTo, float? LeaveDays, string Remarks)
public string InsrtTblEmp(TblEmpLeaveDat TblEmpDat)
{
string msg ="";
try
{
var obj = new tblEmpLeave()
{
EmpId = TblEmpDat.EmpId,
LeaveAvailType = TblEmpDat.LeaveAvailType,
DateFrom = TblEmpDat.DateFrom,
DateTo = TblEmpDat.DateTo,
LeaveDays = TblEmpDat.LeaveDays,
Remarks = TblEmpDat.Remarks
};
Db.tblEmpLeaves.Add(obj);
Db.SaveChanges();
msg = "Record insert successfully";
}
catch(Exception ex)
{
msg = ex.Message;
}
return msg;
}
}
现在据我了解,Web 服务只接受对象数据类型。第一个问题:我可以在 jquery 中创建对象吗?
按原样使用此 Web 服务会更有效率吗?或者我应该修改它以便它采用硬编码字符串值而不是对象。
如有任何帮助,我们将不胜感激。
如果表单中的字段名称与模型中的字段名称相同,您可以这样做:
var frm = $(document.myform);
var formData = JSON.stringify(frm.serializeArray());
$.ajax({
url: 'http://localhost:5096/AndroidWebService.asmx/InsrtTblEmp',
type: "POST",
contentType: "application/json",
data: formData,
dataType: "json",
success: function (result) {
var jEl = $("#divMessage");
jEl.html(result.d).fadeIn(1000);
setTimeout(function () { jEl.fadeOut(1000) }, 5000);
},
error: function (xhr, status) {
alert("An error occurred: " + status);
}
});
如果表单名称不同,您可以像这样在 formData 中设置数据:
var formData= {
EmpId: $('.input1').val(),
LeaveAvailType: $('.input2').val(),
DateFrom: $('.input3').val(),
DateTo: $('.input4').val(),
LeaveDays: $('.input5').val(),
Remarks: $('.input6').val()
};