我有一個「提交」按鈕並附加到它是一個使用Jquery/ajax的事件處理程序。對於成功的功能將數據從一個燒瓶視圖來:在同一個.js文件中使用來自ajax success()事件和其他事件處理程序的數據
$('input[type=submit]').click(function() {
var final_data; //tried defining here
var input_ID = $("#input_ID").val();
var Node_Type = $("#Node_Type").val();
$.ajax({
type: "POST",
url: "/",
dataType: 'json',
data: {
input_ID: input_ID,
Node_Type: Node_Type,
},
success: function(data) {
var IDData = JSON.stringify(data);
console.log(IDData);
var galData = JSON.parse(IDData);
var startnodes = [];
var endnodes = [];
var startnodetype = [];
var endnodetype = [];
var SendTime = [];
var PayTime = [];
var Total_Amt = [];
var Depth = [];
galData.map(function(e, i) {
startnodes.push(e[0]);
endnodes.push(e[1]);
startnodetype.push(e[2]);
endnodetype.push(e[3]);
SendTime.push(e[4]);
PayTime.push(e[5]);
Total_Amt.push(e[6]);
Depth.push(e[7]);
});
var final_data = createNodes(startnodes, endnodes, startnodetype, endnodetype, SendTime, PayTime, Total_Amt, Depth);
makeGraph("#Network_graph", final_data);
}
});
return false;
});
無論是
createNodes() and makeGraph()
功能正常工作,併爲他們兩個的代碼是相同的.js文件作爲事件處理程序。
我想用
var final_data
在其他事件處理程序在同一.js文件。
var filtered_data = [];
var myBtn = document.getElementById("depth");
if (myBtn) {
myBtn.addEventListener("click", function() {
var nodes = [];
var links = [];
var e = document.getElementById("select_ID");
var strUser = e.options[e.selectedIndex].value;
console.log(strUser);
d3.selectAll("line").filter(function(d, i) {
if (d.depth <= strUser) {
if (isUnique(d.source.id, nodes)) {
nodes.push(d.source);
}
if (isUnique(d.target.id, nodes)) {
nodes.push(d.target);
}
links.push(d);
}
});
filtered_data.links = links;
filtered_data.nodes = nodes;
filtered_data.nodetype = final_data.nodetype;
d3.select('#Network_graph').selectAll("*").remove();
makeGraph("#Network_graph", filtered_data);
});
}
var fullBtn = document.getElementById("full_data");
if (fullBtn) {
fullBtn.addEventListener("click", function() {
d3.select('#Network_graph').selectAll("*").remove();
makeGraph("#Network_graph", final_data);
});
}
與失敗:
Uncaught ReferenceError: final_data is not defined
at HTMLButtonElement.<anonymous>
您可以在函數的外部聲明var final_data,使它保持在作用域內。就像一個全局變量。 –
var IDdata = Json.stringify(data)..現在「數據」來自後端燒瓶視圖,並且只有在成功(數據)中才會被拾取。它不會在成功之外保持有效(數據)。並且var final_data依賴於IDData。 –