我正在尝试使用以下代码打印Google最后一句话。 问题是它只打印1个引号,似乎它停止运行。 这可能是个问题? 谢谢 丹尼
<script type="text/javascript">
$(document).ready(function(){
var symbol = 'goog';
var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22"+symbol+"%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json";
while (1 == 1) {
var jqxhr = $.getJSON(url, function (json)
{
var lastquote = json.query.results.quote.LastTradePriceOnly;
document.write("lastquote = " + lastquote + "<br>");
})
.done(function() {
document.write( "success<br>" );
})
.fail(function() {
document.write( "error<br>" );
})
.always(function() {S
document.write( "complete<br>" );
});
}
});
</script>
答案 0 :(得分:1)
你可以while(true)
运行无限循环。我想象了对象,没关系。所以你有一个谷歌的结果。现在,您尝试使用该代码对yahoo进行 DDOS 攻击。试图获取每个cpu周期的数据是疯了,雅虎注意到并阻止你,因为你非常吃他们的资源。您最好使用 setInterval 函数来执行ajax调用。它可能在1到5秒之间变化。我不知道这个api是否有限制。
答案 1 :(得分:0)
请记住,AJAX调用是异步,因此您基本上会对该网址发出无限请求!
它可能会在几秒钟后挂起你的浏览器,使用超时并在前一个完成时再次执行该功能,如下所示:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function(){
var symbol = 'goog';
var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22"+symbol+"%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json";
ajaxRequest(url);
});
function ajaxRequest(url) {
var jqxhr = $.getJSON(url, function (json)
{
var lastquote = json.query.results.quote.LastTradePriceOnly;
document.write("lastquote = " + lastquote + "<br>");
window.setTimeout(function() { ajaxRequest(url); }, 1000);
})
.done(function() {
document.write( "success<br>" );
})
.fail(function() {
document.write( "error<br>" );
})
.always(function() {
document.write( "complete<br>" );
});
}
</script>
</body>
</html>
答案 2 :(得分:0)
你这样做的方式非常错误!!!
您在此处编写的代码将无限制地开始向服务器发送请求。所以while( 1==1 )
中的情况实际上是在一秒钟内执行它的数千次。
您实际上已经立即发起了数千个请求,$.getJSON(url, ...);
已经被解雇了。
你应该在一个人完成时发送另一个请求,就这样......
function requestData(){
$.getJSON(url)
.done(function(){
// Do your stuff
// ...
// and call requestData again
requestData();
}).
fail(function(){
// Handle Errors
// ...
// and call requestData again
requestData();
});
}
// Call for first time.
requestData();
这样您的一个请求就完成了(失败/成功)。它会触发另一个请求等等。