Как я могу использовать функцию jquery-1 значение переменной, внутри функции-2?

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть 2 события jQuery, происходящие внутри a form . Внутри одного select элемента form :

Событие 1 находится при выборе изменения. Он сохраняет выбранное значение параметра в переменной:

 $('#sm_name').change(function(){
    var option_value = $('#sm_name option:selected').val();
    console.log(option_value);
});
  

Событие 2 находится в форме отправки с использованием $.ajax() :

 $("#fb_form").on('submit', function (e) {
    e.preventDefault();
    $("#message").empty();
    $("#loading").show();

    $.ajax({
        url: "submit.php",
        type: "POST",                 // Type of request to be send, called as method
        data: new FormData(this),     // Data sent to server, a set of key/value pairs (i.e. form fields and values)
        contentType: false,           // The content type used when sending data to the server.
        cache: false,                 // To unable request pages to be cached
        processData: false,           // To send DOMDocument or non processed data file it is set to false
        success: function (data) {    // A function to be called if request succeeds
        }
    });
});
  

Как я могу динамически изменять URL-адрес AJAX для каждого выбранного значения из select выпадающего списка? Что-то вроде этого:

 url: "submit.php?id="   option_value,
  

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

1. url: «submit.php?id=» $(‘#sm_name’).val()

2. объявите параметр var option_value; глобально. или используйте url: «submit.php?id=» $(‘#sm_name option:выбрано’).val()

3. @DeepakSharma хотя это будет работать, следует избегать глобальных переменных

4. затем используйте url: «submit.php?id=» $(‘#sm_name option:выбрано’).val(),

Ответ №1:

Вы можете просто прочитать значение select внутри submit обработчика:

 $("#fb_form").on('submit', function (e) {
    e.preventDefault();
    $("#message").empty();
    $("#loading").show();

    $.ajax({
        url: "submit.php?id="   $('#sm_name').val(),
        type: "POST",
        data: new FormData(this),
        contentType: false,
        cache: false,
        processData: false,
        success: function (data) {
            // do something on request success...
        }
    });
});
  

Обратите внимание на использование val() непосредственно в select элементе — вам не нужно обращаться к выбранной опции, чтобы получить значение.

Ответ №2:

Вы можете напрямую получить значение от dropdown to submit form до URL, который выбран в dropdown

 url: "submit.php?id=" $('#sm_name').val()
  

Ответ №3:

Это не относится к jQuery, в JavaScript вы можете использовать функцию closures для использования переменных из внешней области:

 var outerScopeVariable = null;

function a() {
    outerScopeVariable = 'hello world';
}

function b() {
    console.log(outerScopeVariable); // will output 'hello world' if
                                     // function a() has previously been called.
}