不调用getJSON回调

时间:2013-12-29 22:06:09

标签: javascript jquery json

我一直在为我的网站制作一个Minecraft状态栏,并且我使用我对Javascript和jQuery的最小知识编写了这段代码。从我所看到的情况来看,似乎应该可以正常工作。

var url = 'minecove.org'; // URL of Server to Query
var port = '25565'; // Port of the Server
$.getJSON('http://api.syfaro.net/minecraft/1.2/server/status?ip=' + url + '&port=' + port), function(data) {
    var online = data.online;
    var playerson = data.players.online;
    var maxplayers = data.players.max;
    if (online) {
        $('#online').text('Online').css('color', '#000000');
        $('#players').text(playerson + '/' + maxplayers + ' players online');
    }
    else {
        $('#online').text('Offline').css('color', '#333333');
        $('#players').text('No Players');
    }
}

我在页面上有两个div,“在线”并导航到http://api.syfaro.net/minecraft/1.2/server/status?ip=minecove.org&port=25565工作正常,返回JSON数据。我只是编码错了吗?根据我读过的几个教程,这种方法应该有效。我还将JSON行更改为$.getJSON(http://api.syfaro.net/minecraft/1.2/server/status?ip=minecove.org)以消除上述变量中​​的任何错误,但这也不起作用。我真的很感激这方面的一些帮助。

感谢。

3 个答案:

答案 0 :(得分:4)

您被逗号运算符欺骗(这很棘手,因为结果仍然是有效的语法)。

以下内容是否有问题?

$.getJSON('x' + url + '&port=' + port), function(data) {
   //..
}

它应该。事实上,port之后的括号应该在回调之后,以便它也作为参数传递。

$.getJSON('x' + url + '&port=' + port, function(data) {
   //..
})

答案 1 :(得分:0)

函数getJSON将函数作为参数。

http://api.jquery.com/jquery.getjson/

var url = 'minecove.org'; // URL of Server to Query
var port = '25565'; // Port of the Server
$.getJSON('http://api.syfaro.net/minecraft/1.2/server/status?ip=' + url + '&port=' + port/*)*/, function(data) {
    var online = data.online;
    var playerson = data.players.online;
    var maxplayers = data.players.max;
    if (online) {
        $('#online').text('Online').css('color', '#000000');
        $('#players').text(playerson + '/' + maxplayers + ' players online');
    }
    else {
        $('#online').text('Offline').css('color', '#333333');
        $('#players').text('No Players');
    }
});

答案 2 :(得分:0)

您有2个语义错误。一个是提前关闭一个括号,另一个是在函数后没有关闭最后一个括号。你的代码应该是:

var url = 'minecove.org'; // URL of Server to Query
var port = '25565'; // Port of the Server
$.getJSON('http://api.syfaro.net/minecraft/1.2/server/status?ip=' + url + '&port=' + port, function(data) {
    var online = data.online;
    var playerson = data.players.online;
    var maxplayers = data.players.max;
    if (online) {
        $('#online').text('Online').css('color', '#000000');
        $('#players').text(playerson + '/' + maxplayers + ' players online');
    }
    else {
        $('#online').text('Offline').css('color', '#333333');
        $('#players').text('No Players');
    }
});

我测试了它并且工作正常。

来自玻利维亚拉巴斯的欢呼声