#jquery #ajax
#jquery #ajax
Вопрос:
Ранее я задавал вопрос относительно этого (который я удалил), где у меня было приведено ниже в виде трех отдельных сценариев. Сейчас я продвигаюсь дальше и объединил их, но получаю ошибки.
В основном я получаю значение переключателя для месяца и значение другого переключателя для года на основе id
. Я устанавливаю их как переменные в jquery, и они отображаются в консоли, как и ожидалось. Они также отображаются в div
, на id
которые я ссылаюсь, $("#Year_Display").empty();
$("#Year_Display").append(year);
используя в них. Я делаю то же самое в течение месяца, как вы можете видеть ниже.
Я хочу опубликовать эти переменные с помощью ajax, чтобы я мог заполнить <div>
соответствующим месяцем и годом.
Вот что у меня есть:
<script>
//Selects Month and Year Value
$(document).ready(function(){
$("#Jan, #Feb, #Mar, #Apr, #May, #Jun, #Jul, #Aug, #Sep, #Oct, #Nov, #Dec") // select the radio by its id
.change(function(){
if( $(this).is(":checked") ){ // check if the radio is checked
var month = $(this).val();
console.log(month);
$("#Month_Display").empty();
$("#Month_Display").append(month);
}
});
$("#1, #2, #3, #4")
.change(function(){
if( $(this).is(":checked") ){
var year = $(this).val();
console.log(year);
$("#Year_Display").empty();
$("#Year_Display").append(year);
}
});
// ajax retrieve
$.ajax({
url:'includes/handlers/ajax_load_data.php',
type:'POST',
data:{'month':month, 'year':year},
success: function(data) {
$('#myDIV').html(data);
}
});
});
</script>
Ошибка, которую я получаю, jquery-3.3.1.min.js:2 Uncaught ReferenceError: month is not defined
и все же, когда я нажимаю разные месяцы и годы, они отображаются как ожидалось как в консоли, так и на странице.
Я работал над этим слишком долго, чтобы не просить о помощи; Я собирал это вместе из ответов здесь и на других сайтах. Как вы можете видеть, мой jquery / ajax не настолько хорош, поэтому любая помощь / ссылки будут оценены.
Ответ №1:
Я добавил некоторые изменения в код, вы можете объявить var на глобальном уровне и использовать во всех своих функциях, поэтому, используя это, он не выдаст ошибку, что месяц не определен, надеюсь, это поможет вам!
//Выбирает значение месяца и года
$(document).ready(function () {
var month;
var year;
$("#Jan, #Feb, #Mar, #Apr, #May, #Jun, #Jul, #Aug, #Sep, #Oct, #Nov, #Dec") // select the radio by its id
.change(function () {
if ($(this).is(":checked")) { // check if the radio is checked
month = $(this).val();
console.log(month);
$("#Month_Display").empty();
$("#Month_Display").append(month);
if (month != null amp;amp; month != '' amp;amp; year != null amp;amp; year != '') {
loadData(month, year);
}
}
});
$("#1, #2, #3, #4")
.change(function () {
if ($(this).is(":checked")) {
year = $(this).val();
console.log(year);
$("#Year_Display").empty();
$("#Year_Display").append(year);
if (month != null amp;amp; month != '' amp;amp; year != null amp;amp; year != '') {
loadData(month, year);
}
}
});
// ajax retrieve
function loadData(month, year) {
$.ajax({
url: 'includes/handlers/ajax_load_data.php',
type: 'POST',
data: { 'month': month, 'year': year },
success: function (data) {
$('#myDIV').html(data);
}
});
};
});
Комментарии:
1. Глобальные переменные
var month;
amp;var year;
предотвращают ошибки на странице. Но они не имеют значения. Мне нужно, чтобы они имели значение изmonth = $(this).val();
иyear = $(this).val();
, чтобы они имели смысл для выполнения вызовов в php. Может быть, это способ, которым все это структурировано. amp; np Я ценю любую помощь 🙂2. и вы можете создать другую функцию для вызова ajax и поместить ее за пределы document.ready, и вы можете проверить это, когда месяц и год имеют значения
3. но когда пользователь выбирает любой выпадающий список, вы присваиваете значения обоим переменным, это используется, когда вам нужно использовать свой var несколько раз, однако, если это поможет вам, пожалуйста, отметьте ответ как принятый 🙂
4. да, ajax не запускается, когда я пытаюсь использовать оператор if. Таким образом, месяц и год не сохраняют свое значение за пределами
.change(function()
5. Я не использую выпадающий список. Я использую переключатели, которые мне зачем-то нужны
.change