Как мне решить эту проблему с одним и тем же сайтом, чтобы все наши пользователи не получали ошибок? - PullRequest
0 голосов
/ 02 августа 2020

Сводка

Я пытаюсь вызвать простой API, который вернет мне информацию о продукте. Для простоты я пытаюсь просто записать в консоль displayName и номер SKU. Пока мне не удалось это сделать.

Модель API

Вот площадка API: https://partner.element14.com/io-docs

Я использую метод поиска продукта .

Это то, что возвращается при успешном вызове:

{
    "keywordSearchReturn": {
        "numberOfResults": 7949,
        "products": [{
            "sku": "1360829",
            "displayName": "SCHURTER - 0001.1004 - Fuse, Cartridge, Fast Acting, 1 A, 250 V, 5.4mm x 22.5mm, 0.2\" x 0.79\", SP Series",
            "productStatus": "STOCKED",
            "rohsStatusCode": "YES_YES",
            "packSize": 1,
            "unitOfMeasure": "EACH",
            "id": "pf_UK1_1360829_0",
            "image": {
                "baseName": "/1360825-40.jpg",
                "vrntPath": "farnell/"
            },
            "datasheets": [{
                "type": "T",
                "description": "Technical Data Sheet (325.09KB) EN",
                "url": "http://www.farnell.com/datasheets/2349118.pdf"
            }],
            "prices": [{
                "to": 499,
                "from": 10,
                "cost": 0.285
            }, {
                "to": 999,
                "from": 500,
                "cost": 0.266
            }, {
                "to": 4999,
                "from": 1000,
                "cost": 0.241
            }, {
                "to": 9999,
                "from": 5000,
                "cost": 0.237
            }, {
                "to": 999999999,
                "from": 10000,
                "cost": 0.232
            }],
            "inv": 192,
            "vendorId": "100047",
            "vendorName": "SCHURTER",
            "brandName": "SCHURTER",
            "translatedManufacturerPartNumber": "0001.1004",
            "translatedMinimumOrderQuality": 10,
            "attributes": [{
                "attributeLabel": "Fuse Size Metric",
                "attributeValue": "5.4mm x 22.5mm"
            }, {
                "attributeLabel": "Fuse Size Imperial",
                "attributeValue": "0.2\" x 0.79\""
            }, {
                "attributeLabel": "Breaking Capacity Current AC",
                "attributeUnit": "kA",
                "attributeValue": "1.5"
            }, {
                "attributeLabel": "Blow Characteristic",
                "attributeValue": "Fast Acting"
            }, {
                "attributeLabel": "Voltage Rating VAC",
                "attributeUnit": "V",
                "attributeValue": "250"
            }, {
                "attributeLabel": "Product Range",
                "attributeValue": "SP Series"
            }, {
                "attributeLabel": "Fuse Current",
                "attributeUnit": "A",
                "attributeValue": "1"
            }],
            "related": {
                "containAlternatives": false,
                "containcontainRoHSAlternatives": false,
                "containAccessories": false,
                "containcontainRoHSAccessories": false
            },
            "stock": {
                "level": 192,
                "leastLeadTime": 71,
                "status": 1,
                "shipsFromMultipleWarehouses": true,
                "breakdown": [{
                    "inv": 167,
                    "region": "Liege",
                    "lead": 71,
                    "warehouse": "LG1"
                }, {
                    "inv": 25,
                    "region": "UK",
                    "lead": 71,
                    "warehouse": "UK1"
                }, {
                    "inv": 0,
                    "region": "UK",
                    "lead": 71,
                    "warehouse": "GB1"
                }, {
                    "inv": 0,
                    "region": "-",
                    "lead": 71,
                    "warehouse": "PE1"
                }],
                "regionalBreakdown": [{
                    "level": 167,
                    "leastLeadTime": 71,
                    "status": 1,
                    "warehouse": "Liege",
                    "shipsFromMultipleWarehouses": false
                }, {
                    "level": 25,
                    "leastLeadTime": 71,
                    "status": 1,
                    "warehouse": "UK",
                    "shipsFromMultipleWarehouses": true
                }, {
                    "level": 0,
                    "leastLeadTime": 71,
                    "status": 1,
                    "warehouse": "-",
                    "shipsFromMultipleWarehouses": false
                }],
                "expectedStock": {
                    "level": "300",
                    "date": "2020-09-02"
                },
                "expectedStock": {
                    "level": "300",
                    "date": "2020-09-23"
                }
            },
            "countryOfOrigin": "CN",
            "comingSoon": false,
            "inventoryCode": 5,
            "nationalClassCode": null,
            "publishingModule": null,
            "vatHandlingCode": "SLST",
            "releaseStatusCode": 4,
            "isSpecialOrder": false,
            "isAwaitingRelease": false,
            "reeling": false,
            "discountReason": 30,
            "brandId": "100047",
            "commodityClassCode": "037004000",
            "orderMultiples": "10",
            "packageName": null
        }]
    }
}

Опять же, я пока просто пытаюсь получить displayName и SKU .

URL Результаты

Работает отлично! Странно, я вставляю URL-адрес:

http://api.element14.com//catalog/products?term=any%3Afuse&storeInfo.id=uk.farnell.com&resultsSettings.offset=0&resultsSettings.numberOfResults=1&resultsSettings.refinements.filters=&resultsSettings.responseGroup=small&callInfo.omitXmlSchema=false&callInfo.callback=&callInfo.responseDataFormat=json&callinfo.apiKey=3vg7dqhbhu2apjjymk4xhzv3

и получаю все JSON. :)

URL-адрес работает

Я прочитал, пробовал на всех «Один и тот же сайт», кросс-домен и т. Д. c - но, видимо, я не могу понять правильное сочетание. Я попытался добавить правильные файлы cookie, изменить их и т. Д. c. Ничего не сработало.

Вот тестовый код, с которым я работаю, чтобы попытаться заставить это работать:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jquery-1.11.0.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js"></script>
</head>

<body>



    <script>
        Cookies.set('name', 'value', { sameSite: 'none' });
        Cookies.set('name', 'value', { secure: 'true; secure' });
        // Using the core $.a3vg7dqhbhu2apjjymk4xhzv3jax() method
        $.ajax({

                // The URL for the request
                url: "http://api.element14.com//catalog/products?term=any%3Afuse&storeInfo.id=uk.farnell.com&resultsSettings.offset=0&resultsSettings.numberOfResults=1&resultsSettings.refinements.filters=&amp;resultsSettings.responseGroup=small&callInfo.omitXmlSchema=false&callInfo.callback=&callInfo.responseDataFormat=json&callinfo.apiKey=3vg7dqhbhu2apjjymk4xhzv3",

                
                // Whether this is a POST or GET request
                type: "GET",
                'Access-Control-Allow-Origin': 'http://127.0.0.1:5500/' ,
                // The type of data we expect back
                dataType: "jsonp", 
                crossDomain: 1,
                sameSite: none
            })
            // Code to run if the request succeeds (is done);
            // The response is passed to the function
            .done(function (json) {
                console.log(json.keywordSearchReturn);
            })
            // Code to run if the request fails; the raw request and
            // status codes are passed to the function
            .fail(function (xhr, status, errorThrown) {
                alert("Sorry, there was a problem!");
                console.log("Error: " + errorThrown);
                console.log("Status: " + status);
                console.dir(xhr);
            })
            // Code to run regardless of success or failure;
            .always(function (xhr, status) {
                alert("The request is complete!");
            });


            
    </script>
</body>

</html>

Спасибо за любую помощь, которую вы можете предложить. Я уже давно зациклился на этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...