#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.
}