M. Daban Ответов: 2

Как позвонить в код позади, прежде чем на JavaScript


У меня есть 2 страницы
Страница 1 содержит кнопку asp, которая должна вызвать функцию code behind, а затем открыть страницу 2 в виде всплывающего окна
на странице 2 также есть кнопка asp, которая должна вызвать функцию из своего собственного кода позади и другую функцию из кода страницы 1 позади, а затем закрыть всплывающее окно

другими словами: Мне нужно перенести данные со страницы 1 на страницу 2, подготовить другие данные на странице 2 перед закрытием и сообщить странице 1 о закрытии, чтобы получить данные

примечание: Я хочу сделать это без разрешения пользователя для всплывающего окна, поэтому регистрация скриптов из кода позади? не то, что я ищу!

"Я использую сеансы для передачи данных"

Что я уже пробовал:

Я пытался дозвониться до невидимой кнопки АСП событие click с помощью JavaScript
Он работает на странице 1, но не всегда

"Страница 1 с использованием главной страницы"
"веб-форма страницы 2"

В этом коде я использовал
document.getElementById('ContentPlaceHolder1_HiddenButton').click();
на странице 1, чтобы создать сеанс данных перед открытием всплывающего окна. и используется
document.getElementById('HiddenButton').click();
на странице 2 подготовить еще один сеанс данных для возврата. используемый также
opener.document.getElementById('ContentPlaceHolder1_HiddenButton1').click();
в страница1 страница2 информировать о новых данных сессии и закрытия всплывающего окна.

код страницы 1

<script type="text/jscript">
     
       function OpenPopup() {
         document.getElementById('ContentPlaceHolder1_HiddenButton').click();
         window.open("WebForm1.aspx", "List", "scrollbars=yes,resizable=no,width=1000,height=600");
            return false;
        }

    </script>

 <asp:Button  ID="HiddenButton1" runat="server" Text="Button"  style="display:none"	

        OnClick="HiddenButton1_Click"/>
    <asp:Button  ID="HiddenButton" runat="server" Text="Button" style="display:none"	OnClick="HiddenButton_Click"/>

<asp:Button ID="btnOffer" runat="server" Text="Add Offer"  onclientclick="javascript:return OpenPopup();"/>


код страницы 2
<script type="text/javascript"> 
   function returnValues() {
    
            document.getElementById('HiddenButton').click();
           opener.document.getElementById('ContentPlaceHolder1_HiddenButton1').click();
            window.close();
     
    }
    </script>

 <asp:Button  ID="HiddenButton" runat="server" Text="Button" style="display:none" OnClick="HiddenButton_Click"/>

<asp:Button ID="btnFinish" runat="server"  OnClientClick="javascript:return returnValues()" Text="finish and close" />

2 Ответов

Рейтинг:
2

Er. Puneet Goel

Я только что создал функцию на родительской странице (page1), как показано ниже:

function InformedFromPage2() {
           alert('from page2');
       }


И на странице 2 я вызвал функцию следующим образом:

function returnValues() {
           opener.InformedFromPage2();
           document.getElementById('HiddenButton').click();
           opener.document.getElementById('HiddenButton1').click();
           window.close();

       }


M. Daban

отлично, но иногда вызов события click для кнопок не работает

Vincent Maverick Durano

это не сработает, если вы возвращаете false в событие onclient click

Рейтинг:
11

Vincent Maverick Durano

почему бы не изучить и не использовать AJAX для вызова серверных методов? Таким образом, вы не будете иметь дело с постбэками, которые могут причинить вам боль при смешивании с логикой JavaScript. Вот краткий справочник, который может помочь вам начать работу: Множество способов связи с вашей базой данных с помощью jQuery AJAX и ASP.NET[^]