Как сохранить значения статических переменных в функциях JavaScript при обратной передаче? - PullRequest
1 голос
/ 27 января 2010

У меня есть этот образец ниже:

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">

    <script type="text/javascript">
function test(){

if (test.initialized=='undefined'){
    test.initialized = 'true';
    }

alert(test.initialized);

};
    </script>

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:Button ID="btnPostBack" runat="server" Text="Post back" OnClientClick="test()" />
</asp:Content>

Когда я щелкнул пост-обратно на странице, я обнаружил, что инициализированная переменная, которая определяется в самой функции, теряет свое значение и снова становится неопределенной.

Можно ли сохранить эти статические значения, как только они будут определены, и сделать их незатронутыми от каких-либо публикаций на странице?

Ответы [ 5 ]

2 голосов
/ 27 января 2010

Вы можете добавить их в виде строки запроса или сохранить в файле cookie.

1 голос
/ 27 января 2010

JavaScript будет перезапущен при обратной передаче при перезагрузке страницы (если вы не используете панели обновления).

, чтобы сохранить значение на стороне клиента, записать значение в скрытое поле asp с помощью JS и не отображать javascript, если IsPostBack имеет значение true, чтобы он не перезаписывался при обратной передаче

1 голос
/ 27 января 2010

Может быть, вы хотите сделать что-то вроде этого. Я также думаю, что вы путаете тестовую функцию с тестовым объектом.

var initialized = false;
function test(){
    if ( !initialized){
        initialized = true;
    }
};
            alert(initialized); // false
            test();
            alert(initialized); //true
0 голосов
/ 27 января 2010

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

var p = '<% = blah.Text%>';

0 голосов
/ 27 января 2010

Я думаю, что использование частичной обратной связи также является способом.

Если это невозможно, только с помощью сценария Java я думаю, что файлы cookie могут быть другим способом, если они не отключены пользователем.

Мне кажется, что лучший способ - это оформить страницу так, чтобы мне не нужно было ее хранить:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...