jQueryのヘルプが必要で、asp.netボタンのポストバックを停止しています。以下のコードを見ると、変数errを定義し、その値に0を与えました。次に、jqueryがWebサービスから文字列を取得しました。実際にはエラー文字列です。この文字列の長さが0の場合、errは1に設定されます。それ以外の場合は、ビジネスルールエラーが返されるため、err = 2が設定されます。jQuery停止ボタンポストバック
私は、アプリケーションをデバッグすると、errは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" />
はい、そうです。注文は私が思った通りではありません。私のWebサービスコールを同期させるように変更するにはどうすればよいですか? – MikeB55
はいそれがそれでした。私は非同期:falseを追加し、それは働いた。どうもありがとうございました。 – MikeB55
しかしこれは最善の解決策ではありませんが、同期呼び出しを必要としないようにコードを再構成する方法については、本当に考えるべきです。 Webサービスの応答が遅い場合や、まったく応答しない場合に問題が発生します。 – CaffGeek