ajax ответ не является предварительной обработкой, как ожидалось - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь проанализировать данные ответов из запросов API безопасного просмотра Google, и ответ, похоже, является прототипом javascript объекта, в который я безуспешно пытаюсь преобразовать или разобрать в JSON. Мой ajax вызов выглядит следующим образом:

$( document ).ready(function() {
console.log( "ready!" );

//first fake links and event listeners
AddFakeLinks(faulty_links, curr_list);

//url checker action
$("#my_form").submit(function(event){
    event.preventDefault(); //prevent default action 

    var api_url = "https://safebrowsing.googleapis.com/v4/threatMatches:find?"
    var key = 'AIz________________________ns'
    api_url += "key="
    api_url += key

    var payload = 
    {
        "client":{
            "clientId": "_________________.googleusercontent.com",
            "clientVersion": "1.0.0",
        },
        "threatInfo": {
            "threatTypes":      ["MALWARE", "SOCIAL_ENGINEERING"],
            "platformTypes":    ["WINDOWS"],
            "threatEntryTypes": ["URL"],
            "threatEntries": [
              {"url": "http://www.pitt.edu/"},
              {"url": "http://www.exchange.pitt.edu/"}
            ]
          }
    };

    $.ajax({
        type: "POST",
        url: api_url,
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify(payload),
        xhr: function(){
            //upload Progress
            var xhr = $.ajaxSettings.xhr();
            if (xhr.upload) {
                xhr.upload.addEventListener('progress', function(event) {
                    var percent = 0;
                    var position = event.loaded || event.position;
                    var total = event.total;
                    if (event.lengthComputable) {
                        percent = Math.ceil(position / total * 100);
                    }
                    //update progressbar
                    $("#upload-progress .progress-bar").css("width", + percent +"%");
                }, true);
            }
            return xhr;
        },
        success:function (data) {
            console.log(data);
        },
        error:function(jqXhr, textStatus, errorThrown) {
             console.error(textStatus, errorThrown) 
        }
    }).done(function(response){
        $("#server-results").html(response);
        console.log(response);
    });

Консоль имеет следующий вывод: enter image description here

Сетевая консоль отображается с ответом 200 ok :

enter image description here

1 Ответ

0 голосов
/ 07 апреля 2020

Я совсем не знаком с этим API. Но, посмотрев документацию, кажется, что проблема не соответствует вашему запросу.

https://developers.google.com/safe-browsing/v4/lookup-api

Тело ответа

Тело ответа включает информацию о совпадении (имена списков и URL-адреса, найденные в этих списках, метаданные, если таковые имеются, и длительности кэша). Для получения дополнительной информации см. Тело ответа threatMatches.find и пояснения, которые следуют за примером кода.

Примечание. Если совпадений нет (то есть, если ни один из URL-адресов, указанных в запросе, не является найденный в любом из списков, указанных в запросе), ответ HTTP POST просто возвращает пустой объект в теле ответа.

...