我已经设法弄清楚如何抓取外部json并在javascript中使用手动设置ID在模态中使用它。
我坚持将id从按钮传递到javascript url。我的按钮标记如下;
<button type="button" class="btn btn-primary btn-sm modal-btn" data-id="10">Details</button>
我的JS目前看起来像这样;
<script type="application/javascript">
$(document).ready(function() {
var table = $('#example').DataTable( {
dom: 'T<"clear">lfrtip',
tableTools: {
"sRowSelect": "multi",
"aButtons": [ "select_all", "select_none" ],
"aoColumnDefs": [
{ "bVisible": false, "aTargets": [ 1 ] }
]
}
});
$('#example tbody').on( 'click', 'tr', function (e) {
if($(e.target).is('.modal-btn')){
$('#fullDetails').modal('show');
var event = "details.php?id=" + ($(this).data('id'));
$.getJSON(event, function( data ) {
$(".modal-title").text(data.title);
$(".modal-audience").text(data.audience);
$(".modal-leader").text(data.leader);
$(".modal-date").text(data.date);
$(".modal-start_time").text(data.start_time);
$(".modal-end_time").text(data.end_time);
$(".modal-details").text(data.details);
$(".modal-venue").text(data.venue);
$(".modal-cost").text(data.cost);
}, "json" );
}else{
$(this).toggleClass('selected');
}
});
$('#button').click( function () {
alert( table.rows('.selected').data().length +' row(s) selected' );
});
}); </script>
有问题的行是;
var event = "details.php?id=" + ($(this).data('id'));
我正在使用($(this).data('id'));尝试从按钮中获取id属性,但我一直未定义。
答案 0 :(得分:4)
尝试
var event = "details.php?id=" + ($(e.target).data('id'));
$(this)指向被点击的tr。
答案 1 :(得分:2)
尝试按以下方式获取
$('#example tbody').on( 'click', 'tr', function (e) {
var target = $( e.target );//Try this change
if(target.is('.modal-btn')){ //compare it this way
$('#fullDetails').modal('show');
var event = "details.php?id=" + (target.data('id'));//fetch it like this
$.getJSON(event, function( data ) {
$(".modal-title").text(data.title);
$(".modal-audience").text(data.audience);
$(".modal-leader").text(data.leader);
$(".modal-date").text(data.date);
$(".modal-start_time").text(data.start_time);
$(".modal-end_time").text(data.end_time);
$(".modal-details").text(data.details);
$(".modal-venue").text(data.venue);
$(".modal-cost").text(data.cost);
}, "json" );
}else{
$(this).toggleClass('selected');
}
});
答案 2 :(得分:0)
将行更改为
var event = "details.php?id=" + $(e.target).data('id');
再试一次