我想知道是否有人可以帮助我。
我已将this页面放在一起,但我收到的错误是我不确定如何解决。
我在firefox中收到的错误是'downloadURL未定义',它突出显示此行是问题所在:
downloadUrl("loadallmyfinds.php", function(data) {
这个页面确实正常工作,直到我添加了这个JS函数,
(function reversegeocode() {
显而易见,问题在于引入这个问题。
但是我现在已经多次阅读过这个剧本,而我却找不到问题。我检查了php脚本,我知道正在从mySQL数据库中检索正确的信息。之前使用过这种类型的文件,我还检查过xml的解析在格式等方面是否正确。
我必须承认自己是javscript的新手,所以也许我缺乏知识会让我失望。
我只是想知道是否有人可以看看这个请让我知道我做错了什么。
非常感谢
答案 0 :(得分:1)
这是您声明downloadUrl的地方:
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function () {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request.responseText, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
//two other functions elided
}) // <------ what's this?!
看起来你在另一个范围内声明了这个函数,这意味着它不是全局可用的,就像你的代码所假设的那样。这可能是您收到未申报错误的原因
修改强>
我将downloadUrl函数移动到脚本的顶部,您不再收到此错误。不幸的是,你现在得到一个关于doNothing未定义的错误。
您只需要将所有这些JavaScript加载到JavaScript友好的IDE中(因此不是Visual Studio)并真正解开所有这些大括号和括号,这样您就可以找出不需要的范围。
答案 1 :(得分:1)
接听downloadUrl()
的全部电话:
downloadUrl("loadallmyfinds.php", function(data) {
// .. rest of the function ..
});
...并将其移至load()
功能的底部,doNothing() {}
下方。
另外,请确保使用JSHint或JSLint检查代码是否有错误。你有一些错误。几个广泛使用的编辑器/ IDE支持这些工具。或者,您可以使用Cloud9 IDE作为基于Web的免费IDE,并支持错误检查。
同样解决这个问题:
google.maps.event.addListener(gmarker, function() {
updateMarkerAddress; // <- this is a function and you are not calling it
});
修改强>
来自 Adam Rackis 的非常有用的评论解决了我对提升的不了解(请参阅下面的评论他的答案):
假设您正在以下列形式定义函数:function
downloadUrl() {...}
(OP是),那么它在定义之前是否被调用并不重要。函数定义被提升到范围的顶部。只有当你执行类似var downloadUrl = function() { ... }
之类的操作时才会挂起函数的定义(只是声明)。