使用javascript从url获取自动建议

getting autosuggest from a url using javascript

本文关键字:获取 javascript url 使用      更新时间:2023-09-26

我有一个自动建议url,我需要从中编写一个JavaScript代码,通过它我可以看到自动建议数据。我试过下面的代码,但我无法通过。

<!DOCTYPE html>
<head>
<script>
    var xmlhttp = new XMLHttpRequest();
    var url = "http://***.poc.xxxxx.com/v1/staples/suggest?authKey=baef7f8e39c512342c8a14b7f6018b58&q=wat&rows=8";
    var words = []
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            myFunction(xmlhttp.responseText);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(response) {
    var data = JSON.parse(response);
    var req_data = data.suggestions[0].suggestion;
    console.log(req_data);
    //document.getElementById("id01").innerHTML = words;
}
</script>
 </head>
   <body>
     <!-- <div id="id01"></div> -->
   </body>
</html>

我得到的回应是:-

{"suggestions":[{"suggestion":"'u200B'u200B'u200B<b>wat</b>er","categories":[{"name":"Water & Juice","filter":"category_id%3A4606"},{"name":"Water Dispensers & Filters","filter":"category_id%3A16896"}]},{"suggestion":"'u200B'u200B'u200B<b>wat</b>er cooler","categories":[{"name":"Water Dispensers & Filters","filter":"category_id%3A16896"},{"name":"Kitchen Storage & Organization","filter":"category_id%3A1303"}]},{"suggestion":"'u200B'u200B'u200B<b>wat</b>er bottle","categories":[{"name":"Lunch Totes & Water Bottles","filter":"category_id%3A8812"},{"name":"Water & Juice","filter":"category_id%3A4606"}]},{"suggestion":"'u200B'u200B'u200B<b>wat</b>er cups","categories":[{"name":"Disposable Plates & Cups","filter":"category_id%3A992"},{"name":"Disposable Cups","filter":"category_id%3A13302"}]},{"suggestion":"'u200B'u200B'u200B<b>wat</b>er bottle labels","categories":[{"name":"Labels","filter":"category_id%3A997"},{"name":"Mailing & Shipping Labels","filter":"category_id%3A6118"}]},{"suggestion":"'u200B'u200B'u200B<b>wat</b>er dispenser","categories":[{"name":"Water Dispensers & Filters","filter":"category_id%3A16896"},{"name":"All Kitchen","filter":"category_id%3A60479"}]},{"suggestion":"'u200B'u200B'u200B<b>wat</b>ch","categories":[{"name":"Pedometers & Fitness Trackers","filter":"category_id%3A2554"},{"name":"Smart Watches","filter":"category_id%3A62030"}]},{"suggestion":"'u200B'u200B'u200B<b>wat</b>ercolor","categories":[{"name":"Abstract Art","filter":"category_id%3A12645"},{"name":"Wall Art/Decor","filter":"category_id%3A26678"}]}]}

根据该回复,我需要找到建议之后的所有产品名称,而不是推荐,如水冷却器等的建议。

很难辨别你到底想要什么。如果你想要的只是作为建议返回的所有"名称"属性的列表,你可以收集这样的属性:

function myFunction(response) {
    var data = JSON.parse(response);
    var items = data.suggestions;
    var names = [], cat;
    // iterate array of suggestions
    for (var i = 0; i < items.length; i++) {
        cat = items[i].categories;
        // iterate array of categories in each suggestion
        for (var j = 0; j < cat.length; j++) {
            names.push(cat[j].name);
        }
    }
    console.log(names.join(","));
}

工作演示:http://jsfiddle.net/jfriend00/trdppth0/


既然你已经弄清楚了你想要什么输出,你就可以得到这样的建议词列表:

function myFunction(response) {
    var data = JSON.parse(response);
    var items = data.suggestions;
    var suggestions = items.map(function(item) {
        return item.suggestion;
    });
    console.log(suggestions.join(",")); 
}

工作演示:http://jsfiddle.net/jfriend00/bv3yfkwr/