shift()和pop()不是函数

时间:2018-01-07 12:59:28

标签: javascript jquery arrays json

所以我正在制作一个用于学习目的的随机报价生成器机器项目并遇到错误。 我尝试在其他答案中寻找它,但无法理解/解决它。 这是JS代码:

    $('#new').on('click', function(e) {
    e.preventDefault();
    $.ajax( {
      url: 'https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&_jsonp=mycallback',
      success: function(data) {
        console.log(data);
        var post = data.shift(); // The data is an array of posts. Grabbing the first one.
        $('.author').text(post.title);
        console.log(post.title);
        $('.quote').html(post.content);
        console.log(post.content);
      },
      cache: false
    });
  });

对于第一个console.log,它以数组的形式显示数据,所以我尝试使用pop和shift函数来提取数据。这是数据格式:

/**/mycallback([{"ID":1640,"title":"Scott Belsky","content":"<p>To envision what will be, you must remove yourself from the constant concern for what already is.<\/p>\n","link":"https:\/\/quotesondesign.com\/scott-belsky\/","custom_meta":{"Source":"<a href=\"http:\/\/the99percent.com\/book\">book<\/a>"}}])

它为下两个console.log()提供了undefined。 这是错误:

  

未捕获的TypeError:data.shift不是函数

它在两个函数上都出错了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

两件事:

  • 不要定义回调函数。将显式函数名称替换为$.ajax
  • ,将其保留为?
  • 将数据类型设置为jsonp

$.ajax( {
    url: 'https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&_jsonp=?',
    dataType:'jsonp',
    cache: false,
    success: function(data) {
      console.log(data);
      var post = data.shift();
      console.log(post);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>