javascript - 如何使用 JavaScript 从 URL 读取 GET 数据?

标签 javascript parsing url

我正在尝试将数据从一个页面传递到另一个页面。

www.mints.com?name=something

如何使用 JavaScript 读取 name

最佳答案

请参阅this, more current solution在使用如下自定义解析函数或第 3 方库之前。

下面的代码有效,并且在 URLSearchParams 的情况下仍然有用。不可用,但它是在 JavaScript 中没有可用的 native 解决方案的时候编写的。在现代浏览器或 Node.js 中,更喜欢使用内置功能。<​​/p>


function parseURLParams(url) {
    var queryStart = url.indexOf("?") + 1,
        queryEnd   = url.indexOf("#") + 1 || url.length + 1,
        query = url.slice(queryStart, queryEnd - 1),
        pairs = query.replace(/\+/g, " ").split("&"),
        parms = {}, i, n, v, nv;

    if (query === url || query === "") return;

    for (i = 0; i < pairs.length; i++) {
        nv = pairs[i].split("=", 2);
        n = decodeURIComponent(nv[0]);
        v = decodeURIComponent(nv[1]);

        if (!parms.hasOwnProperty(n)) parms[n] = [];
        parms[n].push(nv.length === 2 ? v : null);
    }
    return parms;
}

使用如下:

var urlString = "http://www.example.com/bar?a=a+a&b%20b=b&c=1&c=2&d#hash";
    urlParams = parseURLParams(urlString);

返回一个这样的对象:

{
  "a"  : ["a a"],     /* param values are always returned as arrays */
  "b b": ["b"],       /* param names can have special chars as well */
  "c"  : ["1", "2"]   /* an URL param can occur multiple times!     */
  "d"  : [null]       /* parameters without values are set to null  */ 
} 

所以

parseURLParams("www.mints.com?name=something")

给予

{name: ["something"]}

编辑:original version of this answer使用基于正则表达式的方法进行 URL 解析。它使用了一个较短的函数,但该方法存在缺陷,我将其替换为合适的解析器。

关于javascript - 如何使用 JavaScript 从 URL 读取 GET 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/814613/

相关文章:

javascript - 使用 AngularJS 深度合并对象

regex - 如何将段落拆分为由句点 (.) 分隔的句子,除非句点是缩写的一部分?

language-agnostic - 解析二进制和字 rune 件的语言

javascript - 如何在 JavaScript 中解析大型 JSON 流中的项目?

iphone - NSURL 错误过多

c++ - 检查访问了哪个网站

javascript - Cypress:键入键和键代码的组合

javascript - Discord 机器人开发的 SQL 语法问题 (mySQL 8.0)

php - 使用 .htaccess 文件获得好看的 url

javascript - 根据脚本的响应更新 div