网址未定义

时间:2011-12-07 18:45:44

标签: javascript google-maps-api-3

我想知道是否有人可以帮助我。

我已将this页面放在一起,但我收到的错误是我不确定如何解决。

我在firefox中收到的错误是'downloadURL未定义',它突出显示此行是问题所在:

downloadUrl("loadallmyfinds.php", function(data) { 

这个页面确实正常工作,直到我添加了这个JS函数,

(function reversegeocode() {
显而易见,问题在于引入这个问题。

但是我现在已经多次阅读过这个剧本,而我却找不到问题。我检查了php脚本,我知道正在从mySQL数据库中检索正确的信息。之前使用过这种类型的文件,我还检查过xml的解析在格式等方面是否正确。

我必须承认自己是javscript的新手,所以也许我缺乏知识会让我失望。

我只是想知道是否有人可以看看这个请让我知道我做错了什么。

非常感谢

2 个答案:

答案 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() {}下方。

另外,请确保使用JSHintJSLint检查代码是否有错误。你有一些错误。几个广泛使用的编辑器/ 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() { ... }之类的操作时才会挂起函数的定义(只是声明)。