代码之家  ›  专栏  ›  技术社区  ›  shutupchigo

JSON返回两次url

  •  0
  • shutupchigo  · 技术社区  · 7 年前

    我在一个页面上有一个html表,其中raw有“url”,我试图从一个随机行一次获取一个url,但是我的代码返回url为 http://www.test.com/products/product-namehttp://www.test.com/products/product-name.json ,如您所见,它返回url两次,一次没有json,另一次有json数据,因此我得到404。

    我只需要.json URL,而不是第一部分。

    $(document).ready(function() {
      $(document).on('click', '#closepopup', function() {
        $("#popup").removeClass('popupslidein')
      });
      var tablelink = "https://test.com/pages/product-listing-for-popups.json"; //products url for json data
      $.getJSON(tablelink, function(data) {
        var table = data.page.body_html;
        $('#popuptable').append(table);
        startthepopups()
      });
      var suburbink = "https://test.com/pages/product-listing-suburbs-for-popups"; //suburb names in table rows
      $.getJSON(suburbink, function(data) {
        var suburb = data.page.body_html;
        $('#popupsuburb').append(suburb)
      });
      var namelink = "https://test.com/pages/product-listing-names-for-popups"; //names in table rows
      $.getJSON(namelink, function(data) {
        var name = data.page.body_html;
        $('#popupname').append(name)
      });
    
      function startthepopups() {
        var popupstay = 10000;
        var popuptrigger = 100000;
    
        function triggerpopup() {
          var getrandomtd = Math.floor((Math.random() * $('#popuptable tr').length) + 1);
          var link = $('#popuptable tr:nth-child(' + getrandomtd + ')').text();
          console.log(link);
          var productname = '';
          var getrandomsuburbtd = Math.floor((Math.random() * $('#popupsuburb tr').length) + 1);
          var suburblink = $('#popupsuburb tr:nth-child(' + getrandomsuburbtd + ')').text();
          var getrandomnametd = Math.floor((Math.random() * $('#popupname tr').length) + 1);
          var randomname = $('#popupname tr:nth-child(' + getrandomnametd + ')').text();
          $.getJSON(link + '.json', function(data) {
            productname = data.product.title;
            imagelink = data.product.images[0].src;
            if (!$("#popup").hasClass("popupslidein")) {
              $('#popupsomeone span.name').empty().append(randomname);
              $('#popupsomeone span.location').empty().append(suburblink);
              $('#popupimage').css('background-image', 'url(' + imagelink.split('.jpg')[0] + '_small.jpg)');
              $('#popupproduct a').attr('href', link).empty().append(productname);
              $("#popupagotext").empty().append(Math.round(Math.random() * 15 + 10));
              $("#popup").addClass('popupslidein');
              setTimeout(function() {
                $("#popup").removeClass('popupslidein')
              }, popupstay);
            }
          });
        }(function loop() {
          var random = Math.round(Math.random() * 10) * 100000 + popuptrigger;
          setTimeout(function() {
            triggerpopup();
            loop()
          }, 60000)
        }());
      }
    
    });
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   AnonymousSB    7 年前

    $.getJSON() 有一种倾向,就是把你当前的url附加到你传递的路径上,如果它认为它是相对的。为了使这个工作,你可以尝试使用 像这样。请记住,使用的协议将是此代码所在的当前页面。

    $.getJSON('//test.com/pages/product-listing-for-popups.json')
    

    http://www.test.com/products/product-name.json ,是否确定共享了正确的代码段?

    以下两种使用方法 使用完全限定的url可以非常好地工作:

    $(document).ready(function() {
      var url = "https://jsonplaceholder.typicode.com/todos/1";
      
      // Example 1
      $.getJSON(url)
        .done(function( data ) {
          console.log(data);
        });
        
      // Example 2
      $.getJSON(url, function(data) {
        console.log(data)
      });
      
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>