如何在JavaScript中获取HTTP请求的“文件”参数?

时间:2019-10-16 06:44:36

标签: javascript html xmlhttprequest

我正在尝试编写Java脚本脚本,该脚本基于用户是否正确登录将其重定向到单独的PHP脚本。问题是,我似乎无法弄清楚如何获取请求的文件参数,以便可以查看我要查找的请求是否存在。如何在Java脚本中获取请求的文件参数? 很抱歉造成误解,文件属性的意思是以下每个请求的“文件”部分下的内容。 example

因此,如果在数据包的文件选项卡下设置了某个文件,我该如何区分?

1 个答案:

答案 0 :(得分:-1)

不清楚您要问什么。 “使我可以查看我正在寻找的请求是否存在”部分告诉我,您想调试您的网站,或者至少是我对此的解释。

如果您使用的是Chrome或Firefox Developer Edition,则可以按F12(或CTRL + SHIFT + J)打开开发者控制台。

转到“网络”标签,您将看到所有XMLHTTPRequest。
单击特定请求,您将看到其详细信息。

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”的参数,则类似于

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年,您应该using the FETCH-APIasyncawait,而不是不使用promises的XMLHttpRequest-API。

这里是getting started overview

编辑: 嗯,我明白了:

如果您有网址,例如

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

您这样做

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

获取域部分。然后,您减去域(+ protocol),并以?结尾。或#:

完整代码:

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];