Создание глобальных переменных Java Script

Я использую функцию var для создания переменных, чтобы я мог использовать их в PHP. Поэтому я могу использовать функцию post. В основном я импортировал их в javascript.

В любом случае, как мне сделать их глобальными переменными?

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

Вот код

$(document).ready(function () {
    var user_login = $('#user_login').val();
    var user_pass = $('#pass_login').val();
    $('#field').keyup(function (e) {

        if (e.keyCode == 13) {

            //If enter is pressed vailidate the form
            e.preventDefault();
            $.ajax({

                url: 'ajax/check.php',
                type: 'post',
                data: {
                    user_login: user_login,
                    pass_login: user_pass
                },
                success: function (data) {
                    $('#content').html(data);
                }
            });
        };
    });

    $('#submit').click(function (e) {
        if (e.keyCode != 13) {


            $.ajax({

                url: 'ajax/check.php',
                type: 'post',
                data: {
                    user_login: user_login,
                    pass_login: user_pass
                },
                success: function (data) {
                    $('#content').html(data);
                }
            });
        }
    });

});

person Spudster    schedule 29.05.2013    source источник
comment
создать глобальные js-файлы просто ... просто отбросьте переменную ... или установите ее в объект окна window.myVar = 'Hello';   -  person Orangepill    schedule 29.05.2013


Ответы (3)


Вероятно, вы не хотите, чтобы они были глобальными, поскольку для этого нет причин. Поскольку вы это закодировали, переменные будут оцениваться только один раз, как только документ будет готов, то есть до того, как пользователь введет что-либо в поля вашей формы. Вы хотите оценить их в обработчике onkeyup или при отправке формы, чтобы получить текущие значения. Я не уверен, что ваш check.php работает, но он должен выглядеть примерно так:

$(function(){
   $('form#theform').submit(function(e){
      e.preventDefault();
      var  user_login = $('#user_login').val(),
           user_pass = $('#pass_login').val();
      // you ajax submit here

   });

   $('#field').keyup(function(e){
       e.preventDefault();
       var  user_login = $('#user_login').val(),
            user_pass = $('#pass_login').val();
       // do your validation, if successful then do: $('theform').trigger('submit');
   });
});

Причина, по которой вы не хотите использовать здесь глобальные переменные, заключается в том, что вам ВСЕГДА нужен самый последний ввод. Если вы используете глобальную переменную, то нет никакого способа сказать, что у вас самый последний ввод, потому что все будет рассинхронизировано.

person prodigitalson    schedule 29.05.2013

Глобальный, вероятно, здесь не лучший вариант. Похоже, вы больше заинтересованы в сокращении повторяющегося кода? Вы можете реорганизовать текущий код во что-то вроде:

$(document).ready(function () {
    function submitForm() {
        var user_login = $('#user_login').val();
        var user_pass = $('#pass_login').val();

        $.ajax({
            url: 'ajax/check.php',
            type: 'post',
            data: {
                user_login: user_login,
                pass_login: user_pass
            },
            success: function (data) {
                $('#content').html(data);
            }
        });
    }

    $('#field').keyup(function (e) {
        if (e.keyCode == 13) {
            //If enter is pressed vailidate the form
            e.preventDefault();
            submitForm();
        };
    });

    $('#submit').click(function (e) {
        if (e.keyCode != 13) {
            submitForm();
        }
    });
});
person dc5    schedule 29.05.2013
comment
Мне нужно, чтобы они были глобальными, так как я также собираюсь использовать переменные для расширения других функций. Все вышеперечисленные методы помогли. Спасибо;.) - person Spudster; 29.05.2013
comment
Я позвонил в javascript. Джава. Я знаю, что java - это совершенно другой язык программирования, просто опечатка, которая теперь исправлена. - person Spudster; 29.05.2013

Вам нужно вызывать .val() на вашем входе каждый раз, когда вы хотите получить текущее значение входов. Если вы вызовете его только один раз в начале, переменные не будут обновляться по мере того, как пользователь вводит входные данные.

Сделайте что-нибудь вроде этого:

$(document).ready(function() {
    // Make a function that returns the data, then call it whenever you
    // need the current values
    function getData() {
        return {
            user_login: $('#user_login').val(),
            user_pass: $('#pass_login').val()
        }
    }

    function check(e) {
        e.preventDefault();
        $.ajax({

            url: 'ajax/check.php',
            type: 'post',
            data: getData(), // get current values
            success: function (data) {
                $('#content').html(data);
            }
        });
    }

    // Don't repeat so much; use the same function for both handlers
    $('#field').keyup(function(e) {
        if (e.keyCode == 13) check(e);
    });

    $('#submit').click(function(e) {
        if (e.keyCode != 13) check(e);
    });

});
person Trevor Dixon    schedule 29.05.2013