Javascript JQuery ajax无法一致地执行C#WebMethod

Javascript JQuery ajax无法一致地执行C#WebMethod,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我有一个特殊的问题,它与下面的帖子关系不大: external.js文件中的jQuery ajax函数将不会调用Webmethod背后的代码 我已经从客户端使ajax正常运行。然而,我已经了解到WebMethod并不是每次都执行,或者我应该说,不是始终如一地执行 我注意到,在某些情况下,ajax函数会保存我的客户端参数数据,但在某些情况下,代码隐藏中的WebMethod将不会被调用,程序将直接跳转到OnClick事件,该事件需要WebMethod保存的参数以确保应用程序正常运行 例如,当对DB进

我有一个特殊的问题,它与下面的帖子关系不大:

external.js文件中的jQuery ajax函数将不会调用Webmethod背后的代码

我已经从客户端使ajax正常运行。然而,我已经了解到WebMethod并不是每次都执行,或者我应该说,不是始终如一地执行

我注意到,在某些情况下,ajax函数会保存我的客户端参数数据,但在某些情况下,代码隐藏中的WebMethod将不会被调用,程序将直接跳转到OnClick事件,该事件需要WebMethod保存的参数以确保应用程序正常运行

例如,当对DB进行多次调用时,它将在第一次正确地执行插入,但在某些时候,可能是第二次、第三次、第四次(不一致),存储参数的变量不会因为ajax函数没有调用WebMethod而更改

似乎每次都会调用ajax函数,但WebMethod每次都无法执行

我已将代码中的示例包括在下面:

.aspx-页面中嵌入的Onclick和OnClientClick按钮事件:

<div class="modal fade" id="mdlNewCkLines" data-target=".bs-example-modal-sm" data-keyboard="false" data-backdrop="static" tabindex="-1" role="dialog" aria-labelledby="newModalLabel" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close hidden" data-dismiss="modal" aria-hidden="true">x</button>
            <center><h4 class="modal-title">New Check</h4></center>
        </div>
        <div class="modal-body">
            <div class="row">&nbsp;</div>
            <asp:Panel runat="server" ID="pnlNewCk2">
                <div class="panel panel-info" id="newCheckPanel2">
                    <div class=" panel-heading">
                        <h2 class="panel-title"><b>Add Check Lines</b></h2>
                    </div>
                    <div class="panel-body" style="background-color: #fbfbfb;">
                        <div class="form">
                            <div class="row">
                                <asp:Table runat="server" ID="tblLines" CssClass="data3">
                                    <asp:TableRow>
                                        <asp:TableCell Width="200">
                                            <asp:Label ID="lblLines" runat="server" Text="CHECK LINE" CssClass="text-primary" style="padding-left:60px;"/>
                                        </asp:TableCell>
                                        <asp:TableCell Width="300">
                                            <asp:DropDownList runat="server" Width="275" CssClass="form-control input-sm" ID="ddlLines" />                                            
                                        </asp:TableCell>
                                    </asp:TableRow>
                                    <asp:TableRow>
                                        <asp:TableCell Width="200">
                                            <asp:Label ID="lblLinesAmount" runat="server" Text="AMOUNT&nbsp;&nbsp;&nbsp;<b>$</b>" CssClass="text-primary" style="padding-left:60px;"/>
                                        </asp:TableCell>
                                        <asp:TableCell Width="100">
                                            <asp:TextBox CssClass="form-control input-sm" ID="tbLinesAmount" Width="100" runat="server" />
                                        </asp:TableCell>
                                    </asp:TableRow>
                                </asp:Table>
                                <div class="col-sm-12">
                                    <div class="col-sm-offset-9">
                                        <asp:Button type="button" runat="server" class="btn btn-danger btn-xs" OnClick="btnAddNewCkLine_Click" OnClientClick="getCkLineAmt('tbLinesAmount'); saveDdlLinesParms();" ID="btnAddNewCkLine" Text="Submit" UseSubmitBehavior="false"/> <%--OnClick="btnAddNewCkLine_Click"--%>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </asp:Panel>
        </div>
        <div class="modal-footer">
            <div class="row">                    
                <asp:Button type="button" runat="server" class="btn btn-primary btn-sm" ID="btnSubmitCkLine" OnClientlick="closeModal('mdlCheckLines');" Text="Finish" UseSubmitBehavior="true" />
                <asp:Button runat="server" class="btn btn-info btn-sm" data-dismiss="modal" ID="cancelNewCk" OnClick="btnCancelNewCk_Click" Text="Cancel" type="button" UseSubmitBehavior="false"/>                    
            </div>
        </div>
    </div>
</div>
.cs-DB调用并插入:

        public void InsertCheckDetail(string refNo, string lineVal, string amt)
    {
        object obj = null;

        if (DBC == null)
            DBC = new DBConn();

        DBC.ExecutePackage("TCMS.TR_CHECK_PROCESSING.DoInsertCheckDetail", out obj, new ParameterDirection[] { ParameterDirection.Input, ParameterDirection.Input, ParameterDirection.Input }, new object[] { refNo, lineVal, amt })
    }
.jsjs.ajax函数将参数发送到代码隐藏:

function saveDdlLinesParms() {
$.ajax({
    url: "TreasurersChecksEE.aspx/SaveCkLinesParms",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ lineVal: ckLineVal, lineText: ckLineTxt, lineAmt: ckLineAmt }),
    datatype: "json",
    context: document.body,
    error: function (xhr, error) {
        console.debug(xhr); console.debug(error);
        }                                     
//                ,success: function (response) {                    
//                    response ? alert("No: " + num + " Txt: " + txt + " RefNo: " + refundNo ) : alert("It didn't work.");
//                }
})};
如果您能提供有关此问题的任何帮助/信息,我将不胜感激


提前谢谢

您可以显示getCkLineAmt
javascript函数的代码吗?下面是getCkLineAmt函数的代码
函数getCkLineAmt(parm){parm='cphPage\uu'+parm;ckLineAmt=document.getElementById(parm).value;}
当控制台未运行时,您是否会在控制台中发现任何javascript错误?我刚刚尝试将
async:false
添加到ajax属性中,这似乎缓解了问题。我认为在调用Onclick事件之前,JS函数没有完成。因为Onclick需要来自ajax调用的数据,所以我认为异步调用有时会完成,嗯…,顺序不对。哈所以我认为这个问题已经解决了。我刚开始编写代码一年,我已经尽可能多地学习了。这一个肯定是我将在未来关注的东西。非常感谢你的帮助!
        public void InsertCheckDetail(string refNo, string lineVal, string amt)
    {
        object obj = null;

        if (DBC == null)
            DBC = new DBConn();

        DBC.ExecutePackage("TCMS.TR_CHECK_PROCESSING.DoInsertCheckDetail", out obj, new ParameterDirection[] { ParameterDirection.Input, ParameterDirection.Input, ParameterDirection.Input }, new object[] { refNo, lineVal, amt })
    }
function saveDdlLinesParms() {
$.ajax({
    url: "TreasurersChecksEE.aspx/SaveCkLinesParms",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ lineVal: ckLineVal, lineText: ckLineTxt, lineAmt: ckLineAmt }),
    datatype: "json",
    context: document.body,
    error: function (xhr, error) {
        console.debug(xhr); console.debug(error);
        }                                     
//                ,success: function (response) {                    
//                    response ? alert("No: " + num + " Txt: " + txt + " RefNo: " + refundNo ) : alert("It didn't work.");
//                }
})};