如何使用 JQuery 获取 GET 和 POST 变量?

IT技术 javascript jquery
2021-02-10 03:17:04

我如何简单地使用 JQuery获取GETPOST值?

我想做的是这样的:

$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
6个回答

对于 GET 参数,您可以从document.location.search以下位置获取它们

var $_GET = {};

document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
    function decode(s) {
        return decodeURIComponent(s.split("+").join(" "));
    }

    $_GET[decode(arguments[1])] = decode(arguments[2]);
});

document.write($_GET["test"]);

对于 POST 参数,您可以将$_POSTJSON 格式对象序列化为<script>标签:

<script type="text/javascript">
var $_POST = <?php echo json_encode($_POST); ?>;

document.write($_POST["test"]);
</script>

当你在做这件事时(在服务器端做事),你也可以在 PHP 上收集 GET 参数:

var $_GET = <?php echo json_encode($_GET); ?>;

注意:您需要 PHP 5 或更高版本才能使用内置json_encode函数。


更新:这是一个更通用的实现:

function getQueryParams(qs) {
    qs = qs.split("+").join(" ");
    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
    }

    return params;
}

var $_GET = getQueryParams(document.location.search);
1. 您的第一个 GET 示例似乎对我不起作用。2.在您的更新中,您的函数名称中有一个错字
2021-03-25 03:17:04
@MrColes:oop。自从我写这篇文章以来已经有一段时间了。从那时起,我发现 Webkit 在用作文字时不会更新 RegExp 对象的内部位置计数器。我会用修复更新我的答案。
2021-03-30 03:17:04
您的提取方法不考虑没有值的参数 ("?foo&bar=baz“ => {foo:"", bar:"baz"})。
2021-04-03 03:17:04
您是否尝试过在 safari 或 chrome 中运行它?它会创建一个无限循环并使浏览器崩溃。试试像“?p=2”这样简单的东西
2021-04-06 03:17:04
好抓住秋葵!正则表达式中的 = 应该是可选的: ...snip...(?:=([^&]*))?&?)/g
2021-04-10 03:17:04

有一个 jQuery 插件可以获取 GET 参数,名为.getUrlParams

对于 POST,唯一的解决方案是使用 PHP 将 POST 回显到 javascript 变量中,就像 Moran 建议的那样。

为什么不使用好的旧 PHP 呢?例如,假设我们收到一个 GET 参数“目标”:

function getTarget() {
    var targetParam = "<?php  echo $_GET['target'];  ?>";
    //alert(targetParam);
}
@hkusulja 雪上加霜:即使你确认了这一点,我仍然看不出这个问题完全是服务器端的。我觉得像工具一样厚...
2021-03-17 03:17:04
这个剧本太恶心了。如果您希望您的网站被黑,请使用此选项。总是转义用户输入的变量!!不要直接输出 $_GET。
2021-03-17 03:17:04
因为这是服务器端解决方案,问题是关于客户端/javascript/jQuery 端。
2021-03-30 03:17:04

或者你可以使用这个http://plugins.jquery.com/project/parseQuery,它比大多数小(缩小 449 字节),返回一个表示名称-值对的对象。

对于任何服务器端语言,您都必须将 POST 变量发送到 javascript 中。

。网

var my_post_variable = '<%= Request("post_variable") %>';

请注意空值。如果您尝试发出的变量实际上是空的,您将收到一个 javascript 语法错误。如果你知道它是一个字符串,你应该用引号把它包起来。如果它是一个整数,您可能需要在将该行写入 javascript 之前测试它是否确实存在。

但是,您并不总是可以访问服务器端语言。例如 GitHub 页面...
2021-03-15 03:17:04