所以我通过AJAX GET方法从后端获取数据,并在html的列表(下面)中显示它。我试着把按钮标签放在那里,我得到了列表上的按钮,但我不确定如何使用代表和其他人来使其工作。
那么如何将用户发送到关于该列表中自助餐厅的详细信息页面的独立按钮? (这只是个人项目)
$(function(){
var $cafeterias = $('#cafeterias');
var $Name = $('#CName');
var $Location = $('#CLocation');
function DispCafeteria(cafeteria) {
$cafeterias.append('<li> Name: '+cafeteria.Name+'Location: '+cafeteria.Location+'<button id="Details">Details</button>'+'</li>');
}
$.ajax({
type: 'GET',
url: 'some url',
success: function (cafeterias) {
$.each (cafeterias, function (i, cafeteria){
DispCafeteria(cafeteria);
});
},
error: function() {
alert('Error while loading cafeterias');
}
});
});
答案 0 :(得分:1)
一些挑剔:
你应该打破你的问题空间。将问题分成较小的块。
获取AJAX数据:
function fetchData() {
return $.ajax({
type: 'GET',
url: 'some url'
});
}
处理错误:
function handleErrors(err) {
alert('Error while loading cafeterias');
}
构建DOM:
function cafeteriaToString(cafeteria) {
return 'Name: ' + cafeteria.name +
' Location: ' + cafeteria.location;
}
function constructDataTable(cafeterias) {
$.each(cafeterias, function (i, cafeteria) {
var $button = $('<button/>')
.text('Details')
.data('details-id', i);
$('<li/>')
.text(cafeteriaToString(cafeteria))
.append($button);
});
}
附加委托活动:
function handleButtonClicks(e) {
var detailsId = $(this).data('details-id');
// Do something with detailsId
}
全部放在一起:
function init() {
fetchData()
.then(constructDataTable)
.fail(handleErrors);
$('ul').on('click', 'li>button', handleButtonClicks);
}