Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jquery ajax将表单数据插入web服务_Jquery_Ajax_Web Services_Ionic_Asmx - Fatal编程技术网

如何使用jquery ajax将表单数据插入web服务

如何使用jquery ajax将表单数据插入web服务,jquery,ajax,web-services,ionic,asmx,Jquery,Ajax,Web Services,Ionic,Asmx,我正在尝试将Ionic移动应用程序与部署的web服务进行映射 我想插入表单数据,以便通过.NET asmx web服务在数据库中更新表单数据。ajax代码如下所示: $.ajax({ url: 'http://localhost:5096/AndroidWebService.asmx/InsrtTblEmp', type: "POST", contentType: "application/json", data: //what to do

我正在尝试将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 web服务的代码:

    [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()
              };

如果您正在传入类型为TblEmpLeaveDat的tblEmptDat,那么您创建obj而不是仅使用传入对象的原因是什么?webservice代码不完整,可能正在另一个方法中传递。。让我查一查。谢谢你的帮助!我确实觉得我已经取得了一些进展,尽管我仍然在ajaxYou的错误部分结束。您可以尝试使用我在下面展示的代码,但是手动将已知值设置到属性中。这将检查代码是否在ajax调用ok中传递了值。您还可以使用Fiddler检查通话。这将向您展示ajax调用中传递的内容:我认为现在的问题在于找出如何将ajax字符串作为对象传递给web服务,如下面的回答所示,在这里我创建了var formData={…};然后在ajax数据属性中传递formData。