Почему jQuery submit запускает свою собственную страницу, когда действие настроено на другую страницу

#jquery #bootstrap-4 #asp-classic

Вопрос:

У меня есть форма ниже на странице settings.asp, которая должна отправляться в sendmail.asp, но при нажатии на кнопку я вижу в консоли, что вместо этого она запускает settings.asp, и я не могу понять, почему, поскольку идентификатор как формы, так и кнопки уникален.

Кто-нибудь может понять, в чем может быть проблема?

*Приведенный ниже код выполняется в классическом цикле ASP

 <form name="MarkErrorReportSolved" id="MarkErrorReportSolved<%=objErrorReportNew("ID")%>" action="sendmail/sendmail.asp?ErrorReportMarked=yes" method="post">

    <!-- Hidden inputs nessesary for send mail - START -->
    <input name="redirect" type="hidden" id="redirect<%=objErrorReportNew("ID")%>" value="<%=strReportIssueFullUrlNoQueryString%>?ErrorReportMarked=yesamp;ChangeDate=<%=objErrorReportNew("ChangeDate")%>amp;RepoerterName=<%=objErrorReportNew("RepoerterName")%>amp;AnchorPoint=ErrorReports">
    <input name="mailto" type="hidden" id="mailto<%=objErrorReportNew("ID")%>" value="<%=objErrorReportNew("Email")%>">
    <input name="MailCC" type="hidden" id="MailCC<%=objErrorReportNew("ID")%>" value="<%=Session("ADMail")%>">
    <input name="subject" type="hidden" id="subjec<%=objErrorReportNew("ID")%>" value="Fejl rapporteret på EFP [LØST]">
    <input name="template" type="hidden" id="template<%=objErrorReportNew("ID")%>" value="templates/emailtemplate_report_issue_solved.htm">
    <input name="html" type="hidden" id="html<%=objErrorReportNew("ID")%>" value="yes">
    <input name="EFPVersion" type="hidden" id="EFPVersion<%=objErrorReportNew("ID")%>" value="<%=Session("EFPVersion")%>">
    <input name="EFPYear" type="hidden" id="EFPYear<%=objErrorReportNew("ID")%>" value="<%= year(now) %>">
    <input name="HeaderSubHeadline" type="hidden" id="HeaderSubHeadline<%=objErrorReportNew("ID")%>" value="Fejl Løst..">
    <input name="HeaderRightTop" type="hidden" id="HeaderRightTop<%=objErrorReportNew("ID")%>" value="">
    <input name="HeaderRightBottom" type="hidden" id="HeaderRightBottom<%=objErrorReportNew("ID")%>" value="">             


  <!-- Hidden inputs nessesary for send mail - END -->

  <!-- Hidden inputs extra for send mail - START -->

    <%
    ReportIssueSolvedsendername=objErrorReportNew("RepoerterName")
    ReportIssueSolvedFirstName = Split(ReportIssueSolvedsendername, " ")(0)
    %>

    <input name="ADdisplayName" type="hidden" id="ADdisplayName<%=objErrorReportNew("ID")%>" value="<%=Session("ADdisplayName")%>">
    <input name="ErrorDescription" type="hidden" id="ErrorDescription<%=objErrorReportNew("ID")%>" value="<%=objErrorReportNew("ErrorDescription")%>">
    <input name="EFPArea" type="hidden" id="EFPArea<%=objErrorReportNew("ID")%>" value="<%=objErrorReportNew("EFPArea")%>">
    <input name="ChangeDate" type="hidden" id="ChangeDate<%=objErrorReportNew("ID")%>" value="<%=objErrorReportNew("ChangeDate")%>">
    <input name="RepoerterName" type="hidden" id="RepoerterName<%=objErrorReportNew("ID")%>" value="<%=ReportIssueSolvedFirstName%>">
    <input name="ID" type="hidden" id="ID<%=objErrorReportNew("ID")%>" value="<%=objErrorReportNew("ID")%>">

  <!-- Hidden inputs extra for send mail - END -->

  <button type="submit" form="MarkErrorReportSolved<%=objErrorReportNew("ID")%>" data-toggle="tooltip" data-html="true" data-placement="right" title="Klik her for at markere fejl som løst<br><i>(Sender også mail til indsender)</i>" id="btnFetch<%=objErrorReportNew("ID")%>" class="btn btn-success mb-2"><i class="fas fa-check-circle"></i></button></td>

  <script>
      
          $("#btnFetch<%=objErrorReportNew("ID")%>").click(function() {
              console.log("Button Clicked")
              // disable button
              $(this).prop("disabled", true);
              // add spinner to button
              $(this).html("<i class='fa fa-spinner fa-spin'></i>");
              $("#MarkErrorReportSolved<%=objErrorReportNew("ID")%>").submit();
              console.log("Form Submitted")
          });
      
  </script>  

</form> 

Комментарии:

1. Там много кода, но, action похоже, он установлен правильно form , поэтому единственное, о чем я могу думать, — это то, что вызывается какой-то другой javascript, который изменяет атрибут действия форм.

2. @user692942 это очень хороший момент, я постараюсь разобраться в этом 🙂

3. @user692942 Я обнаружил проблему .. У меня был скрипт в нижней части настроек.asp .. $('html').on('submit', 'form', function(e) { e.preventDefault() .. с $.ajax({ введите: «СООБЩЕНИЕ» .. так что вы абсолютно правы, на странице был скрипт, который препятствовал отправке .. СПАСИБО, что указали мне в этом направлении 🙂 .. Пожалуйста, опубликуйте ответ, чтобы я мог его принять

Ответ №1:

Эта проблема не связана с классическим ASP, поскольку этот код выполняется на стороне сервера, и из опубликованного вами кода ясно, что form он имеет правильный action набор атрибутов. Также было бы ясно из отладки с помощью инструментов разработки, что отправка страницы перенаправляется.

Это означает, что если вы получаете другую страницу при отправке формы с помощью кода, на странице должен быть какой-то другой скрипт, который изменяет action атрибут формы перед отправкой или полностью переопределяет его (т. Е. обработчик событий AJAX-запроса и т. Д.).