嗨,我有一个按钮组,当所选按钮更改时,应该触发 ajax 调用。
<div class="btn-group" id="graphSelection">
<button type="button" class="btn disabled btn-info" id="post" onclick="graphSelection(this.id)">Posts</button>
<button type="button" class="btn" id="comment" onclick="graphSelection(this.id)">Comments</button>
<button type="button" class="btn" id="interaction" onclick="graphSelection(this.id)">All Interaction</button>
</div>
然后是 javascript/jquery 和 ajax
var postData;
var commentData;
var interactionData;
function graphSelection(clickedID) {
if(!$('#' + clickedID).hasClass('disabled')) {
$('#graphSelection').find('button.disabled').removeClass('disabled btn-info');
$('#' + clickedID).addClass('disabled btn-info');
loadGraphs(clickedID);
}
}
这第一个 javascript 只是更改各个按钮的 css,然后在包含 ajax 的下一个 javascript 函数上调用加载图。
function loadGraphs(type) {
if ((type == "post" && !postData) || (type == "comment" && !commentData) || (type == "interaction" && !interactionData)) {
$.ajax({
url : 'parts/' + type + '_graph.php',
cache: false,
type : 'POST',
data : data,
dataType : 'json',
beforeSend: function() {
$("#report-loading").fadeIn(500);
},
success : function (jsonData) {
alert(type);
if (type == "post")
postData = jsonData;
else if (type == "comment")
commentData = jsonData;
else if (type == "interaction")
interactionData = jsonData;
drawChart(jsonData);
$("#report-loading").fadeOut(500);
},
error : function () {
$("#report-loading").fadeOut(500);
alert("error");
}
})
}
else if (type == "post") {
drawChart(postData);
}
else if (type == "comment") {
drawChart(commentData);
}
else if (type == "interaction") {
drawChart(interactionData);
}
}
在这一个中,我检查了我想加载的图表的类型,然后检查我之前是否加载过数据。如果没有,则触发 ajax 并检索所需的数据。当页面完成加载后,ajax 会自动调用一次并使用一种帖子,但是如果我使用按钮组中的按钮,它会进入 loadGraphs 函数,但 ajax 似乎被“跳过”
任何帮助将不胜感激。
更新 1 var postData; var 评论数据;var 交互数据;
在与其他 javascript 函数相同的脚本标记内定义在顶部。