Я относительно новичок в JavaScript и ASP.NET. Я пытаюсь вызвать функцию C # с веб-страницы через PageMethods в JavaScript, когда кнопка нажата.
Когда я загружаю свою страницу изначально, WebMethod не вызывается при нажатии кнопки. Ниже приведена типичная последовательность событий:
1-е нажатие кнопки - выполняется javascript, но WebMethod не вызывается (или, по крайней мере, не запускается)
2-е нажатие кнопки - выполняется javascript и запускается WebMethod (вставляется запись SQL). Однако я не получаю ответного сообщения на веб-странице - ни одно из предупреждений в приведенном ниже фрагменте не генерируется.
3-е нажатие кнопки - выполняется javascript, запускается WebMethod и возвращается успех.
Последующие нажатия кнопок - так же, как нажатие 3-й кнопки
Приведенная выше последовательность событий не повторяется на 100%. Иногда я получаю сообщение об успехе на втором клике. У меня было несколько случаев, когда я получал сообщение об ошибке 2 при втором нажатии. Поведение первого клика кажется полностью повторяемым. Кроме того, он также всегда работает должным образом после 2-го или 3-го щелчка и всех последующих щелчков.
Я искал этот сайт среди других в течение многих часов, пытаясь понять, что я делаю неправильно, и я еще не нашел его. Любые предложения будут приветствоваться!
Фрагменты кода следующие:
[WebMethod(EnableSession=true)]
public static string UpdateAuditDB()
{
//SQL command removed...
return "success";
}
<script type="text/javascript">
function audit_button() {
PageMethods.UpdateAuditDB(onSuccess, onFailure);
}
function onSuccess(result) {
if (result == "success") {
alert('Success');
}
else {
alert('Failure message 1');
}
}
function onFailure(result) {
alert('Failure message 2');
}
</script>
<asp:ScriptManager ID="ScriptManager1"
runat="server"
EnablePageMethods="true"
ScriptMode="Release"
LoadScriptsBeforeUI="true">
</asp:ScriptManager>
<input class="inlineButtons" tabindex="40" title="auditButton" id="auditButton" type="submit" value="Audit" onclick="audit_button();" />