AJAX有点问题。我设置了这个功能:
<script>
function popEvents(){
var $sqlcal = $('#calHeader').data('sqlcal');
console.log($sqlcal);
$.ajax({
type: "GET",
url: 'XXXX.php',
data: {sqlcal: $sqlcal},
dataType: 'json',
cache: false,
success: function(data){
var x = data;
console.log(x);
$('.open-button').each(function(){
var e = $(this);
var e1 = e.data('dtc');
if (($.inArray(e1, x) > -1)){
e.css('background','red');
console.log('yes')
}else{
console.log('no');
}
});
},
error: function(){
console.log('didnt work');
}
});
delete $sqlcal;
}
</script>
在页面加载时运行(这将根据日历日期填充事件)并且工作正常。现在在同一页面上,日历上有一个下拉按钮,用于选择不同的日历。
目标
如果用户点击其他日历,当前事件将消失(现在只是css背景颜色),并使用popEvents函数填充新事件。
问题
以下是我的li选项代码:
<script>
$( document.body ).on( 'click', '.dropdown-menu li a', function( event ) {
var $target = $( event.currentTarget );
var $value = $(this).data('value');
$target.closest( '.widget-header' )
.find( '#calHeader' ).text( $target.text() ).attr('data-sqlCal',$value)
.end()
.children( '.dropdown-toggle' ).dropdown( 'toggle' );
popEvents();
return false;
});
</script>
当用户选择新日历时,&#39; data-sqlcal&#39;确实更新,但控制台日志中的ajax调用不会更新为&#39; data-sqlcal&#39;的新值。而是在页面加载时进行相同的调用。有人可以帮助我解释为什么会发生这种情况吗?感谢您的帮助
页面加载和用户更改日历时console.log输出:
conferenceevents \\ default calendar on page
xxxxx.php:579 ["2016-02-05", "2016-02-05", "2016-02-05", "2016-02-06", "2016-02-07"]
xxxxx.php:588 no
xxxxxx.php:586 yes
xxxxxxx:588 no
VM24700:3 XHR Loaded (xxxxxx.php - 200 OK - 24.323000106960535ms - 289B)
//clicked on a new calendar from dropdown
xxxxx.php:566 conferenceevents \\ Didnt update(should be huddleoneevents)
xxxxxx.php:579 ["2016-02-05", "2016-02-05", "2016-02-05", "2016-02-06", "2016-02-07"]
xxxxxx.php:588 no
xxxxxx.php:586 yes
xxxxxxxxx.php:588 no
VM24705:3 XHR Loaded (xxxxx.php - 200 OK - 7.968999911099672ms - 290B)