如何在$ .getJSON中使用js函数?

时间:2015-11-21 21:59:28

标签: javascript jquery json

如何在$ .getJSON中使用我的函数JSONtoDate?这不起作用... val.timePosted返回一个字符串,如1448038589396,这个工作正常没有函数但是当我尝试使用函数将str转换为日期时,一切都消失了

$(document).ready(function() {

    function JSONtoDate(num){
      var month = num.getMonth() + 1;
      var day = num.getDate();
      var year = num.getFullYear();
      var date = day + "/" + month + "/" + year;
      return(date);
    }

      $.getJSON("http://www.freecodecamp.com/news/hot", function(json) {

        var html = "";
        var count = 0;

        json.map(function(val) {

          if(count == 0){
            html += "<div class = 'row' >";
          }

          html += "<div class = 'stories col-md-3'>";
          html += "<a href = " + val.link + " > <img src = " + val.image + " width = ' 200px'>";
          html += "<p>" + val.headline + "</p> </a>";
          html += "<p>" + val.rank + "</p>";
          html += "<p>" + JSONtoDate(val.timePosted) + "</p>"; 
          html += "</div>";

          count += 1;

          if(count == 4){
            html += "</div>";
            count = 0 ;
          }

        });

        $(".section").html(html);

      });
    });

2 个答案:

答案 0 :(得分:0)

这里有一个JS错误:

1448038589396不是日期对象,它会抛出:

未捕获的TypeError:num.getMonth不是函数

在jsFiddle中尝试以下内容

在JSONtoDate中

尝试以下

function JSONtoDate(num){
  var num = new Date(num);
  var month = num.getMonth() + 1;
  var day = num.getDate();
  var year = num.getFullYear();
  var date = day + "/" + month + "/" + year;
  return date;
}

http://jsfiddle.net/Lbt9jy8c/

我将一个字符串转换为基于UNIX时间戳的新Date()对象

答案 1 :(得分:0)

您的函数JSONtoDate需要Date个对象作为参数,但您提供String - "1448038589396"。您可以传递日期,该日期由Numberval.timePosted

构成
html += "<p>" + JSONtoDate(new Date(parseInt(val.timePosted))) + "</p>";
                           ^^^^^^^^^^^^^^^^^^              ^^

或让您的函数接受string参数:

function JSONtoDate (dateString) {
  var date = new Date(parseInt(dateString));
  var month = date.getMonth() + 1;
  ...