#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-запроса и т. Д.).