我需要一些jQuery的帮助并停止一个asp.net按钮回发。如果你看下面的代码,我定义了一个名为err的变量,并给它一个值0.然后我让jquery从Web服务获取一个字符串,它实际上是一个错误字符串。如果此字符串的长度为0,则将err等于1,否则将err等于2设置为因为我们正在返回业务规则错误。
当我调试应用程序时,似乎错误等于0,而且从不是1或2.似乎Web服务在我的最后一个if语句之后得到它的值,我应该停止回发。
任何帮助将不胜感激。谢谢。
$(document).ready(function () {
$('#<%=Button1.ClientID %>').click(function (e) {
//Find out the hour and time of the current request
var myString = $('#<%=DropDownList1.ClientID %>').val();
var myResult = myString.split(":");
var myHour = myResult[0];
var myTime = myResult[1];
var xDate = $("*[id$='hiddenDate']").val();
var err = 0;
//Check to see if the end time of the event somehow falls during a time when another event is occuring.
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "StudiesWebService.asmx/CheckEndTime",
data: "{'UserName':'" + "jacksonm" + "','xDate':'" + xDate + "','xHour':'" + myHour + "','xMinutes':'" + myTime + "'}",
dataType: "json",
success: function (data) {
var myReturnedString = data.d;
//if the returned string length is greater than 0, then set err = 2
if (myReturnedString.length = 0) {
err = 1;
}
else {
err = 2;
}
$('.result').html(myReturnedString);
},
error: function (e) {
$('.result').html("An Error occured checking the validity of this event." + e);
err = 2;
}
});
//stop the postback here depending on what err equals.
if (err == 2) {
return false;
}
else {
return true;
}
});
});
<asp:Button ID="Button1" runat="server" Text="Submit Time" class="CLOSE" onclick="Button1_Click" />
答案 0 :(得分:2)
除非您的Ajax Web服务调用实际上是同步的,否则您的代码执行顺序并不像您期望的那样。向成功回调,错误回调以及此评论之前添加警报//stop the postback here depending on what err equals.
最后一次警报应该首先发生,因为Web服务调用将不会返回并在当前函数完成之后执行。
在Ajax调用中,添加此选项async: false
:
$.ajax({
type: "POST",
async: false,
答案 1 :(得分:0)
您将myReturnedString.length var设置为0!
尝试更改行
if (myReturnedString.length = 0) {...}
到
if (myReturnedString.length == 0) {...}
编辑: 要停止回发你可以尝试:
error: function (e) {
$('.result').html("An Error occured checking the validity of this event." + e);
err = 2;
return false;
}