Javascript не может вызвать WebMethod после начальной загрузки страницы - PullRequest
0 голосов
/ 06 марта 2019

Я относительно новичок в 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();" />
...