2017-06-15 59 views
4

当我在一些文件中的代码本(比如:test.html中):它为什么不使用jquery在控制台日志中显示JSON数据?

<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 
    $.getJSON('https://newsapi.org/v1/articles?source=techcrunch&sortBy=top&apiKey=my-api-key',function(json) { 
     console.log(json); 

    }); 
</script> 
</body> 
</html> 

但是,如果我在其他一些文件做同样的事情说了(main.js)

(function(){ 

$.getJSON('https://newsapi.org/v1/articles?source=techcrunch&sortBy=top&apiKey=my-api-key',function(json) { 
     console.log(json); 

    }); 

}); 

上面的代码在控制台中不显示任何JSON数据,我在HTML中添加了main.js。

回答

4

因为在第二个片段中,函数根本不执行。下面

代码,

(function(){ 
    $.getJSON('... url ...', function(json) { 
     console.log(json); 
    }; 
}); 

可以简化为

(function(){}); 

而无法执行的。你需要把括号对函数的最后执行,就像这样:

(function(){}()); 

或者更好的是,使用jQuery的文件准备速记正确执行加载页面后。

希望它的帮助。

+0

感谢它的工作。 –

+1

*“或者更好......”*仅当需要访问DOM元素时才有用。 –

+0

@FelixKling是的谢谢我需要访问DOM元素。 –

1

您需要唤起您在main.js文件中创建的函数。如果你用function() {}包装代码,你正在定义什么是函数,但不是调用它。你需要调用它并定义它。

(function(){ 

    $.getJSON('https://newsapi.org/v1/articles?source=techcrunch&sortBy=top&apiKey=045089075bc74354be01b34f6335d32b',function(json) { 
     console.log(json); 
    }); 

})(); // parenthesis call the function 
+0

谢谢工作正常。 –

相关问题