为什么这段代码不起作用?使用Javascript

时间:2015-01-13 12:46:07

标签: javascript json

JS:

  function loadprice(){
        $.getJSON('http://domain.com/pulsa/data.php',
            function(json){
            $("#pricebtcbuy").append(json.price.btcbuy);
            $("#pricebtcactu").append(json.price.btcactu);
            $("#pricebtcsell").append(json.price.btcsell);
            $("#pricedlrbuy").append(jsonprice.usdbuy);
            $("#ppsaldo").append(json.price.paypal);
            $("#pricedlrsell").append(json.price.usdsell);
});
setTimeout("loadprice()",5000
);

JSON FILE { "price": [ { "btcbuy": "Rp. 2.927.990,-", "btcactu": "", "btcsell": "Rp. 2.784.000,-", "usdbuy": "Rp. 12.853,-", "paypal": "1.00", "usdsell": "Rp. 12.223,-" } ] }

有人知道这里有什么问题吗? Javascript ??谢谢你:D 结果不显示X_X

1 个答案:

答案 0 :(得分:3)

有值正确缩进和格式化代码。你错过了loadprice上的结束大括号。

function loadprice () {
  $.getJSON('http://domain.com/pulsa/data.php', function (json) {
    $("#pricebtcbuy").append(json.price.btcbuy);
    $("#pricebtcactu").append(json.price.btcactu);
    $("#pricebtcsell").append(json.price.btcsell);
    $("#pricedlrbuy").append(jsonprice.usdbuy);
    $("#ppsaldo").append(json.price.paypal);
    $("#pricedlrsell").append(json.price.usdsell);
  });
}

另外,你是否每隔5秒钟试一次?或者您是否尝试在最初调用它之后的5秒钟内运行它?

如果您想在5秒后调用它,则需要在函数定义之外调用setTimeout。在这种情况下,您也不需要在函数名后面加上括号。

setTimeout(loadprice, 5000);

这也可以,并且希望它区分调用函数和传递对象。

setTimeout(function () { loadprice(); }, 5000);

如果您想每5秒运行一次,请使用setInterval。但如果这是你的愿望,那么有更好的方法可以做到这一点。

setInterval(loadprice, 5000);

还有一种更好的方法是使用Promise $.getJSON返回。这样它就不会每5秒运行一次,但每次请求完成后,Ajax调用将在另外5秒内完成。如果响应时间超过5秒,这将避免潜在的问题。

function loadPrice () {
  var jqxhr;

  jqxhr = $.getJSON('http://domain.com/pulsa/data.php', function (json) {
    $("#pricebtcbuy").append(json.price.btcbuy);
    $("#pricebtcactu").append(json.price.btcactu);
    $("#pricebtcsell").append(json.price.btcsell);
    $("#pricedlrbuy").append(jsonprice.usdbuy);
    $("#ppsaldo").append(json.price.paypal);
    $("#pricedlrsell").append(json.price.usdsell);
  });

  jqxhr.done(function () {
    setTimeout(loadPrice, 5000);
  });
}