为什么说回调没有定义?

时间:2012-04-15 06:52:35

标签: javascript json callback jsfiddle

我为我正在制作的游戏制作了一台服务器,它为我生成了一张地图,但在我正在制作的这个测试客户端上,它无法正常工作。

我将网站添加为脚本,并且它作为脚本工作正常,但是当读取jsfiddle上的javascript时,它表示函数callback()没有定义,但显然是,它应该发送地图对象到控制台,但它只是错误...:/

这是JS小提琴的链接: http://jsfiddle.net/Tgwizman/9QrUF/

我希望你们能搞清楚,因为我完全迷失了为什么它不起作用......

5 个答案:

答案 0 :(得分:6)

在你的jsfiddle中,javascript回调函数是在用你的javascript include加载地图后定义的,此时你的回调还没有定义。

这是一个固定的fiddle

示例来源:

<script>
var map;

function callback(cb) {
    map = cb;
    console.log(map);
}
</script>
<script src='http://mmorpg_server.jit.su/?map=0,0'></script>​

答案 1 :(得分:3)

将下拉值更改为no wrap (head)

screen shot

http://jsfiddle.net/9QrUF/3/

答案 2 :(得分:2)

The callback must be defined before the map is loaded。否则,您正在调用未定义的函数。外部脚本可以按任何顺序下载,但按照它们编码到页面中的顺序执行。

<script>
    var map;
    //declare callback first before anything uses it
    function callback(cb) {
        map = cb;
        console.log(map);
    }
</script>

//this calls the callback it MUST be loaded after
<script src='http://mmorpg_server.jit.su/?map=0,0'></script>​

答案 3 :(得分:0)

这是因为jsFiddle并不总是完美无缺。

Here's a fiddle of it working

它发生是因为jsfiddle将脚本元素包装在它们自己的包装器(闭包)中,因此无法访问在它们中声明的任何函数

没关系,KARASZI István'sJoseph's答案更好

答案 4 :(得分:0)

<script type="text/javascript">
var map;

function callback(cb)
 {
    map = cb;
    console.log(map);
}
</script>
<script src='http://mmorpg_server.jit.su/?map=0,0'> 
</script>​

希望这会起作用!!!