Javascript JQuery ajax无法一致地执行C#WebMethod
我有一个特殊的问题,它与下面的帖子关系不大: external.js文件中的jQuery ajax函数将不会调用Webmethod背后的代码 我已经从客户端使ajax正常运行。然而,我已经了解到WebMethod并不是每次都执行,或者我应该说,不是始终如一地执行 我注意到,在某些情况下,ajax函数会保存我的客户端参数数据,但在某些情况下,代码隐藏中的WebMethod将不会被调用,程序将直接跳转到OnClick事件,该事件需要WebMethod保存的参数以确保应用程序正常运行 例如,当对DB进行多次调用时,它将在第一次正确地执行插入,但在某些时候,可能是第二次、第三次、第四次(不一致),存储参数的变量不会因为ajax函数没有调用WebMethod而更改 似乎每次都会调用ajax函数,但WebMethod每次都无法执行 我已将代码中的示例包括在下面: .aspx-页面中嵌入的Onclick和OnClientClick按钮事件: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进
<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"> </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 <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.");
// }
})};