Найдите ключевое слово на основе ответа API и замените его на URL - PullRequest
0 голосов
/ 13 ноября 2018

Я использую Bubble.is для создания внешнего интерфейса для хранения ключевых слов и связанных URL-адресов.Затем я хочу использовать Bubble API, чтобы найти каждое ключевое слово в списке на моем форуме, а затем заменить каждое ключевое слово соответствующим URL.

Например, если кто-то создает пост, содержащий ключевое слово Google, я хочу, чтобы он заменил Google на <a href='www.google.com'>Google</a> Я хотел бы выполнить это с помощью Javascript, если это возможно.

This GET:GET https://findandreplace.bubbleapps.io/version-test/api/1.1/obj/keywords

Получает этот ответ:

    {
    "response": {
        "results": [
            {
                "keyword": "Google",
                "Created Date": "2018-02-03T19:11:09.090Z",
                "Created By": "1508757117987x170844219857826800",
                "Modified Date": "2018-02-03T19:11:09.090Z",
                "url": "https://www.google.com",
                "_id": "1517685069090x817754573188722200",
                "_type": "custom.keywords"
            },
            {
                "keyword": "Amazon",
                "Created Date": "2018-02-03T19:22:24.551Z",
                "Created By": "1517685580376x819307316327467500",
                "Modified Date": "2018-02-03T19:22:24.598Z",
                "url": "https://www.amazon.com",
                "_id": "1517685742904x154482585500647420",
                "_type": "custom.keywords"
            },
            {
                "keyword": "Zillow",
                "Created Date": "2018-02-03T19:30:42.087Z",
                "Created By": "1517685580376x819307316327467500",
                "Modified Date": "2018-02-03T19:30:42.138Z",
                "url": "http://www.zillow.com",
                "_id": "1517686241201x951191101229760500",
                "_type": "custom.keywords"
            },
            {
                "keyword": "Microsoft",
                "Created Date": "2018-10-19T21:39:28.255Z",
                "Created By": "1539985113946x455720216501504200",
                "Modified Date": "2018-10-19T21:39:28.306Z",
                "url": "http://www.microsoft.com",
                "_id": "1539985167224x910185981874274300",
                "_type": "custom.keywords"
            },
            {
                "keyword": "pillow",
                "Created Date": "2018-10-20T03:39:18.907Z",
                "Created By": "1540004754069x571366896387189600",
                "Modified Date": "2018-10-20T03:39:18.957Z",
                "url": "http://superfluous.io/",
                "_id": "1540006758226x128922359984291840",
                "_type": "custom.keywords"
            },
            {
                "keyword": "bug",
                "Created Date": "2018-10-20T03:41:38.227Z",
                "Created By": "1540004754069x571366896387189600",
                "Modified Date": "2018-10-20T03:41:38.280Z",
                "url": "https://www.xkcd.com/1700/",
                "_id": "1540006897525x482895914136502300",
                "_type": "custom.keywords"
            }
        ],
        "cursor": 0,
        "count": 9,
        "remaining": 0
    }
}

Как я могу использовать этот ответ, чтобы найти и заменить ключевые слова соответствующими URL-адресами?

ОБНОВЛЕНИЕ:

Вот базовый код, который заменяет ключевое слово на URL, но как мне использовать данные из API для этого?

<html>
<head>
<script type='text/javascript' 
 src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'> 
</script>
</head>
<body>
 This test is to see if I can conver the word Google to a URL.
<script type="text/javascript">
 (function($) {
 var keywordtest = $("body");
 keywordtest.html(keywordtest.html().replace(/google/ig, '<a 
 href="http://google.com">Google</a>')); 
 })(jQuery)
</script>
</body></html>

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Мне удалось найти друга, чтобы помочь мне, и мы придумали это:

    <!-- include JQuery from Google CDN -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>   

<script type="text/javascript">
    $(document).ready(function() {
        // https://findandreplace.bubbleapps.io/version-test/1.1/obj/keywords

        // set Async false for .each loop to work synchronously
        $.ajaxSetup({ async: false });

        txt = $('body').html(); 
        //alert (txt);

        $.ajax({
            url: "https://findandreplace.bubbleapps.io/version-test/api/1.1/obj/keywords",
            success: function(data){
                //console.log(data);
                $.each(data.response.results, function() {
                    keyword = this['keyword'];
                    url     = this['url'];

                    var regex = new RegExp(keyword, "ig");

                    replaceURL = "<a href='" + url + "'>" + keyword + "</a>";   
                    txt = txt.replace(regex, replaceURL);
                }); //end loop through keywords
                //alert("after keyword " + keyword + "----" + txt)
            } //end success function
        }); //end ajax call

        $('body').html(txt);

        //reset JS sync to true
        $.ajaxSetup({async: true}); 
    }); // end doc ready 

</script>

Проблема в том, что теперь он будет заменять текст внутри гиперссылки на сайте, поэтому мне нужно найти способ не заменять что-либо внутри тегов a и h.

0 голосов
/ 13 ноября 2018

Вы можете попробовать, как показано ниже, если это соответствует вашей цели;

<html>
<head>
<script type='text/javascript' 
 src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'> 
</script>
</head>
<body>
 This test is to see if I can convert the word Google to a URL.
<script type="text/javascript">
 (function($) {
      $.ajax({
            type: "GET",
            dataType: 'json',
            url: "https://findandreplace.bubbleapps.io/version-test/api/1.1/obj/keywords",
            async: false,
            contentType: "application/json; charset=utf-8",
            success: function (msg) {
                msg.response.results.forEach(function(res){
                   if(res.keyword === 'Google'){
                      res.keyword = '<a href="http://google.com">Google</a>';
                   }
                });

                $("body").text(JSON.stringify(msg));             
            }
      });
 })(jQuery)
</script>
</body></html>
...