【问题标题】:Get URL parameters through POST method and javascript通过 POST 方法和 javascript 获取 URL 参数
【发布时间】:2012-07-31 23:20:17
【问题描述】:

如何通过 POST 方法提取 javascript 中的 URL 参数?

例如: 本地主机:8080/file.html/a/30/b/40

a 和 b 将是键,而 30 和 40 将是这些键的值

提前致谢!

【问题讨论】:

    标签: javascript url post parameters


    【解决方案1】:

    你是说 GET 吗?

    file.html?a=30&b=40

    从这个网址可以得到如下参数:

    var param = {};
    var s = window.location.search.substring(1).split('&');
    for (var i = 0; i < s.length; ++i) {
        var parts = s[i].split('=');
        param[parts[0]] = parts[1];
    }
    console.log(param);
    



    编辑:

    据我所知,您提供的 URL 不必与 POST 做任何事情,但如果您可以将其放入 JavaScript 变量中,则可以这样做:

    var url = "file.html/a/30/b/40";
    
    var param = {};
    var parts = url.split("/");
    for (var i = 1; i < parts.length; i += 2) {
        param[parts[i]] = parts[i+1];
    }
    console.log(param);
    

    【讨论】:

    • Aletheios,我的意思是 POST。我正在尝试找到一种从 file.html/a/30/b/40 获取参数的方法
    • 适用于那个特定的 URL,但是同样格式的任意一个呢?我正在尝试让代码适用于任何具有类似格式的 URL
    • 实际上这应该适用于任意 URL(前提是您可以通过某种方式将 URL 放入该变量中)。代码只做了两个假设: 1. URL 必须以文件名开头(即第一个参数在第一个“/”之后) 2. 对于每个参数名称,必须存在一个参数值。也许在这里使用正则表达式会是更好的选择,但我无法帮助您。
    【解决方案2】:

    使用这样的正则表达式怎么样?

    ​var url = document.URL;                             // get the current URL
    var matches = url.match(/.*\/a\/(\d+)\/b\/(\d+)/);  // match it with a regex
    var a = matches[1];                                 // the "a" number (as string)
    var b = matches[2];                                 // the "b" number (as string)
    

    请注意,match 方法返回一个列表,其中第一个元素是整体匹配,其余项目是捕获的元素,即正则表达式模式的两个 (\d+) 部分。这就是为什么这个 sn-p 使用 matches[1]matches[2] 而忽略 matches[0]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      相关资源
      最近更新 更多