我有这个基本设置,我遇到的问题是我的函数<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Edmx Version="1.0" xmlns="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:edm="http://schemas.microsoft.com/ado/2008/09/edm">
<DataServices m:DataServiceVersion="1.0">
<edm:Schema Namespace="(...)">
<!-- ... -->
</edm:Schema>
</DataServices>
</Edmx>
中的变量locations_map
。我在下面指出了我未定义的地方:
load_heat2
我试图避免在我的AJAX / success函数中包装所有东西,所以我需要全局变量才能工作。
感谢。
答案 0 :(得分:2)
您在成功声明
中声明了一个名为locations_map的局部变量 $.ajax({
url: 'php/get_map_tables.php',
type: 'POST',
dataType: 'JSON',
data: {
client_id: client_id, //defined elsewhere
},
success: function(data) { //this gives me the correct data in the right variables
**var** locations_map = data[0].locations_map;
var full_map = data[0].full_map;
}
答案 1 :(得分:2)
您正在重新声明ajax函数中的两个变量。
success: function(data) { //this gives me the correct data in the right variables
var locations_map = data[0].locations_map;
var full_map = data[0].full_map;
}
这是将它们声明为全局但是当你在这里设置时
var
变成了地方。为了使它们保持全局,您需要删除
success: function(data) { //this gives me the correct data in the right variables
locations_map = data[0].locations_map;
full_map = data[0].full_map;
}
所以它看起来像
NodeList xmlCategories = doc.getElementsByTagName("category");
outer : for(int i=0;i<xmlCategories.getLength();i++){
Node category = xmlCategories.item(i);
if(category.getNodeType() == Node.ELEMENT_NODE){
NodeList childrenCatgory = category.getChildNodes();
inner : for(int j=0;j<childrenCatgory.getLength();j++){
Node childCat = childrenCatgory.item(j);
if(childCat.getNodeType() == Node.ELEMENT_NODE){
if(childCat.getNodeName().equals("category")){
Element catEle = (Element) category;
System.out.println("Current element: "+category.getNodeName());
System.out.println("Id: "+catEle.getAttribute("id"));
break outer;
}
}
}
}
}
答案 2 :(得分:2)
在之后调用load_heat2()函数您有ajax请求的响应。另外,删除两个变量的“var”,就像其他答案所指向的一样。
//declare global variables
var full_map;
var locations_map;
function load_heat2(){
console.log(locations_map); //this yields undefined
}
function callIndex() {
$(document).ready(function() {
//call some functions
load_map();
load_test_map2();
super_test_map();
});
$.ajax({
url: 'php/get_map_tables.php',
type: 'POST',
dataType: 'JSON',
data: {
client_id: client_id, //defined elsewhere
},
success: function(data) { //this gives me the correct data in the right variables
locations_map = data[0].locations_map;
full_map = data[0].full_map;
load_heat2();
}
});
} //end of callIndex function