Как получить параметр «файл» HTTP-запроса в JavaScript? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь запрограммировать скрипт java-скрипта, который в зависимости от того, входит ли пользователь в систему должным образом или нет, перенаправит его в отдельный скрипт PHP. Проблема в том, что я не могу понять, как получить параметр файла запроса, чтобы я мог видеть, есть ли запрос, который я ищу. Как получить параметр файла запроса в сценарии Java? Извините за неправильные представления, что я подразумеваю под атрибутом файла, что находится в разделе «файл» для каждого запроса в следующем. пример

Так что, если на вкладке файла пакета установлен определенный файл, как бы я различал?

1 Ответ

0 голосов
/ 16 октября 2019

Непонятно, о чем ты спрашиваешь. Часть «чтобы я мог видеть, есть ли запрос, который я ищу», говорит мне, что вы хотите отладить свой сайт, или, по крайней мере, это моя интерпретация.

Если вы используете Chrome или Firefox Developer Edition , вы можете нажать F12 (или CTRL + SHIFT + J), чтобы открыть консоль разработчика.

Перейдите на вкладку «Сеть», и вы увидите все запросы XMLHTTP. Нажмите на конкретный запрос, и вы увидите его детали.

Developer Tools

Базовый XmlHttpReuqest выглядит так:

function reqListener () {
  console.log(this.responseText);
}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "http://www.example.org/example.txt");
oReq.send();

И вы получите результат вашего запроса в функции обратного вызова reqListener.

См. Также https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

Если вы хотите получить URL-адрес обработчика запроса, он выглядит следующим образом:

function reqListener (e) {
  //console.log(this.responseText);
   console.log(e);
   console.log(e.currentTarget.responseURL);

}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "https://stackoverflow.com/questions/58407228");
oReq.send();

И если вы хотите получить параметр с именем«file» внутри URL, это выглядит как

function getUrlVars(urlHref)
{
    var vars = [], hash;
    var hashes = urlHref.slice(urlHref.indexOf('?') + 1).split('&');
    var i;

    for (i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(decodeURIComponent(hash[0]));
        vars[decodeURIComponent(hash[0])] = decodeURIComponent(hash[1]);
    } // Next i 

    return vars;
} // End Function getUrlVars


var dictParameters = getUrlVars("http://www.example.com/handler?file=bla.bin");

if (dictParameters.contains("file"))
{
    console.log(dictParameters["file"]);
}

Что касается XMLHTTPRequest, у него нет свойства с именем file.

Кроме того, это 2019, вы должны быть используя FETCH-API с async и await , а не XMLHttpRequest-API, который не использует обещаний .

Вот краткий обзор .

Редактировать: Ах, я вижу:

Если у вас есть URL-адрес, например

var url = "http://www6.scratch99.com/web-development/javascript/test.js?abc=def";

youсделать

var url = "http://www6.scratch99.com";
var urlParts = url.replace('http://','').replace('https://','').split(/[/?#]/);
var domain = urlParts[0];

, чтобы получить часть домена. Затем вы вычитаете домен (+ протокол) и заканчиваете его на? или #:

Полный код:

var url = "http://www6.scratch99.com/web-development/javascript/test.js?abc=def";
// var url = "http://www6.scratch99.com";
// var url = "http://www6.scratch99.com?test=123";
var protocol = url.substr(0, url.indexOf(":") + 3)

var urlParts = url.substr(protocol.length).split(/[/?#]/);
var domain = urlParts[0];

var fileParts = url.substr(protocol.length + domain.length);
var file = fileParts.split(/[?#]/)[0];

и, если вы хотите только имя файла:

var pathParts = file.split('/');
var fileOnly = pathParts[pathParts.length-1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...