Uncaught Error: синтаксическая ошибка, нераспознанное выражение в содержимом фида json - PullRequest
3 голосов
/ 10 июля 2019

У меня есть следующий код javascript

<script src='https://code.jquery.com/jquery-2.x-git.min.js'/>
<script type='text/javascript'>
        //<![CDATA[ 

        imgr = new Array();
        imgr[0] = "https://2.bp.blogspot.com/-uitX7ROPtTU/Tyv-G4NA_uI/AAAAAAAAFBY/NcWLPVnYEnU/s1600/no+image.jpg";
        showRandomImg1 = true;
        aBold = true;
        summaryPost = 60;
        summaryPost1 = 180;
        summaryPost2 = 100;
        numposts = 10;
        numposts1 = 6;
          function removeHtmlTag(strx, chop) {
          var s = strx.split("<");
          for (var i = 0; i < s.length; i++) {
            if (s[i].indexOf(">") != -1) {
              s[i] = s[i].substring(s[i].indexOf(">") + 1, s[i].length)
            }
          }
          s = s.join("");
          s = s.substring(0, chop - 1);
          return s;
          }

          function favouritePosts(json) {
          j = (showRandomImg1) ? Math.floor((imgr.length + 1) * Math.random()) : 0;
          img = new Array();
          for (var i = 0; i < numposts; i++) {
            var entry = json.feed.entry[i];
            var posttitle = entry.title.$t;
            var pcm;
            var posturl;

             if (i == json.feed.entry.length) break;
            for (var k = 0; k < entry.link.length; k++) {
              if (entry.link[k].rel == 'alternate') {
                posturl = entry.link[k].href;
                break
              }
            }
            for (var k = 0; k < entry.link.length; k++) {
              if (entry.link[k].rel == 'replies' && entry.link[k].type == 'text/html') {
                pcm = entry.link[k].title.split(" ")[0];
                break
              }
            }
            if ("content" in entry) {
              var postcontent = entry.content.$t;
              } else if ("summary" in entry) {
                var postcontent = entry.summary.$t;
                } else var postcontent = "";
            postdate = entry.published.$t;
            if (j > imgr.length - 1) j = 0;
            img[i] = imgr[j];
            s = postcontent;
            a = s.indexOf("<img");
            b = s.indexOf("src=\"", a);
            c = s.indexOf("\"", b + 5);
            d = s.substr(b + 5, c - b - 5);
            if ((a != -1) && (b != -1) && (c != -1) && (d != "")) img[i] = d;
            var month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
            var month2 = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
            var day = postdate.split("-")[2].substring(0, 2);
            var m = postdate.split("-")[1];
            var y = postdate.split("-")[0];
            var post_id = i;
            var postThumbSize = 600;
            var postThumb = entry.media$thumbnail.url;
            postThumb = postThumb.replace( '/s72-c/', '/s' + postThumbSize + '/' );
            var authorname = entry.author[0].name.$t; 
            var author_img = entry.author[0].gd$image.src;  
            var author_uri = entry.author[0].uri.$t;
            var label_category = entry.category[1].term;
            for (var u2 = 0; u2 < month.length; u2++) {
              if (parseInt(m) == month[u2]) {
                m = month2[u2];
                break
              }
            }

            var address = $(postcontent).find("span.address").html(); 
            var map_point = $(postcontent).find("span.map_point").html(); 



        var item = '<div class="listing-item"><article class="geodir-category-listing fl-wrap"><div class="geodir-category-img"><img src="' + postThumb.replace( '/s72-c/', '/s' + 400 + '/' ) + '" alt=""><div class="overlay"></div></div><div class="geodir-category-content fl-wrap"><a class="listing-geodir-category" href="https://tinosemagazine-new.blogspot.com/search/label/'+label_category+'">'+label_category+'</a><div class="listing-avatar"><a href="'+author_uri+'"><img src="'+author_img+'" alt=""></a><span class="avatar-tooltip">Added By  <strong>'+authorname+'</strong></span></div><h3><a href="'+posturl+'">'+posttitle+'</a></h3><p>'+removeHtmlTag(postcontent,summaryPost1)+'...</p><div class="geodir-category-options fl-wrap"><div class="listing-rating card-popup-rainingvis" data-starrating2="4"><span>(17 reviews)</span></div><div class="geodir-category-location"><a href="#1" class="map-item"><i class="fa fa-map-marker" aria-hidden="true"></i>'+address+'</a><div id="1"></div></div></div></div></article></div>';
        document.write(item);
        }
}
 //]]>
 </script> 

Вышеприведенный javascript запускается с обратным вызовом со следующим кодом

<script>
                              document.write(&quot;&lt;script src=\&quot;https:\/\/tinosemagazine-new.blogspot.com/feeds/posts/summary/-/<data:content/>?max-results=8&amp;orderby=published&amp;alt=json-in-script&amp;callback=favouritePosts\&quot;&gt;&lt;\/script&gt;&quot;);
                            </script>

Другие элементы фида, такие как заголовок сообщения, пост-URL, post img извлечены хорошо, но как и в отношении содержания публикации у меня есть следующая ошибка:

Uncaught Error: Syntax error, unrecognized expression: Το ξεκίνησε τη λειτουργία του το 2001. Χτίστηκε σε μία έκταση 3 στρεμμάτων στην παραλία της Αγίας Κυριακής, στην περιοχή Άγιος Ιωάννης Πόρτο, σε απόσταση 30 μέτρων από την ακτή. Επιθυμία μας είναι να προσφέρουμε στον επισκέπτη ένα περιβάλλον που συνδυάζει την γαλήνη του Κυκλαδίτικου τοπίου, τα πεντακάθαρα νερά του Αιγαίου και την μοναδικότηττα της Τηνιακής φιλοξενίας.
    at Function.fa.error (jquery-2.x-git.min.js:2)
    at fa.tokenize (jquery-2.x-git.min.js:2)
    at fa.select (jquery-2.x-git.min.js:2)
    at Function.fa [as find] (jquery-2.x-git.min.js:2)
    at n.fn.init.find (jquery-2.x-git.min.js:2)
    at new n.fn.init (jquery-2.x-git.min.js:2)
    at n (jquery-2.x-git.min.js:2)
    at favouritePosts ((index):828)
    at Νέα Καταχώρηση?max-results=8&orderby=published&alt=json-in-script&callback=favouritePosts:2
fa.error @ jquery-2.x-git.min.js:2
fa.tokenize @ jquery-2.x-git.min.js:2
fa.select @ jquery-2.x-git.min.js:2
fa @ jquery-2.x-git.min.js:2
find @ jquery-2.x-git.min.js:2
n.fn.init @ jquery-2.x-git.min.js:2
n @ jquery-2.x-git.min.js:2
favouritePosts @ (index):828
(anonymous) @ Νέα Καταχώρηση?max-results=8&orderby=published&alt=json-in-script&callback=favouritePosts:2

Есть решение по этому поводу?Те же ошибки, если у меня есть английские буквы в качестве содержимого публикации ....

ont не знаю, важно ли это для решения проблемы, но в api callback

// API callback
favouritePosts({"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$blogger":"http://schemas.google.com/blogger/2008","xmlns$georss":"http://www.georss.org/georss","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$thr":"http://purl.org/syndication/thread/1.0","id":{"$t":"tag:blogger.com,1999:blog-7531200907987340158"},"updated":{"$t":"2019-07-10T08:43:16.528-07:00"},"category":[{"term":"lodging"},{"term":"Νέα Καταχώρηση"},{"term":"Στυλ1"}],"title":{"type":"text","$t":"Tinos on map"},"subtitle":{"type":"html","$t":""},"link":[{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"https:\/\/tinosemagazine-new.blogspot.com\/feeds\/posts\/summary"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7531200907987340158\/posts\/summary\/-\/%CE%9D%CE%AD%CE%B1+%CE%9A%CE%B1%CF%84%CE%B1%CF%87%CF%8E%CF%81%CE%B7%CF%83%CE%B7?alt=json-in-script\u0026max-results=8\u0026orderby=published"},

до этого момента вышекод имеет красный цвет, и после этого код стал черным, то есть что-то генерирует синтаксическую ошибку в обратном вызове API

{"rel":"alternate","type":"text/html","href":"https:\/\/tinosemagazine-new.blogspot.com\/search\/label\/%CE%9D%CE%AD%CE%B1%20%CE%9A%CE%B1%CF%84%CE%B1%CF%87%CF%8E%CF%81%CE%B7%CF%83%CE%B7"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"}],"author":[{"name":{"$t":"Loukas"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/04860834199108076132"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"generator":{"version":"7.00","uri":"http://www.blogger.com","$t":"Blogger"},"openSearch$totalResults":{"$t":"1"},"openSearch$startIndex":{"$t":"1"},"openSearch$itemsPerPage":{"$t":"8"},"entry":[{"id":{"$t":"tag:blogger.com,1999:blog-7531200907987340158.post-1538845356800237125"},"published":{"$t":"2019-06-25T04:19:00.000-07:00"},"updated":{"$t":"2019-07-10T07:51:09.432-07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"lodging"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Νέα Καταχώρηση"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Στυλ1"}],"title":{"type":"text","$t":"Nostos Resort"},"summary":{"type":"text","$t":"\u003C\n\nΤο Nostos Resort ξεκίνησε τη λειτουργία του το 2001. Χτίστηκε σε μία έκταση 3 στρεμμάτων στην παραλία της Αγίας Κυριακής, στην περιοχή Άγιος Ιωάννης Πόρτο, σε απόσταση 30 μέτρων από την ακτή. Επιθυμία μας είναι να προσφέρουμε στον επισκέπτη ένα περιβάλλον που συνδυάζει την γαλήνη του Κυκλαδίτικου τοπίου, τα πεντακάθαρα νερά του Αιγαίου και την μοναδικότηττα της Τηνιακής φιλοξενίας.\n\nΑγία "},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/tinosemagazine-new.blogspot.com\/feeds\/1538845356800237125\/comments\/default","title":"Σχόλια ανάρτησης"},{"rel":"replies","type":"text/html","href":"https:\/\/tinosemagazine-new.blogspot.com\/2019\/06\/nostos-resort.html#comment-form","title":"0 σχόλια"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7531200907987340158\/posts\/default\/1538845356800237125"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/7531200907987340158\/posts\/default\/1538845356800237125"},{"rel":"alternate","type":"text/html","href":"https:\/\/tinosemagazine-new.blogspot.com\/2019\/06\/nostos-resort.html","title":"Nostos Resort"}],"author":[{"name":{"$t":"Loukas"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/04860834199108076132"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/1.bp.blogspot.com\/-EpGgot5jz9A\/XRvJibRcz1I\/AAAAAAAAl1s\/5KupjmPmAKEovM0lozwYs637uk-CDp-eACLcBGAs\/s72-c\/02.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}}]}});

Хорошо, проблема в том, что точки внутри текста ... Почему-то точка внутрисодержание сообщения генерирует ошибку в json feed .... Как ее решить?

...