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

Edw*_*uay 94 javascript jquery

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

我想做的是这样的:

$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
Run Code Online (Sandbox Code Playgroud)

Ate*_*ral 167

对于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"]);
Run Code Online (Sandbox Code Playgroud)

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

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

document.write($_POST["test"]);
</script>
Run Code Online (Sandbox Code Playgroud)

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

var $_GET = <?php echo json_encode($_GET); ?>;
Run Code Online (Sandbox Code Playgroud)

注意:您需要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);
Run Code Online (Sandbox Code Playgroud)

  • 你的提取方法不考虑没有值的参数("?foo&bar = baz"=> {foo:"",bar:"baz"}). (3认同)

Lea*_*one 16

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

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


ton*_*gil 6

为什么不使用好的旧PHP?例如,假设我们收到一个GET参数'target':

function getTarget() {
    var targetParam = "<?php  echo $_GET['target'];  ?>";
    //alert(targetParam);
}
Run Code Online (Sandbox Code Playgroud)

  • 因为这是服务器端解决方案,而且问题是关于客户端/ javascript/jQuery端. (7认同)
  • 这个剧本太可怕了。如果您希望您的网站被黑客入侵,请使用此选项。始终转义用户输入的变量!不要直接输出 $_GET。 (2认同)

小智 5

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


Kar*_*eem 5

把事情简单化

将VARIABLE_KEY替换为变量的键以获取其值

 var get_value = window.location.href.match(/(?<=VARIABLE_KEY=)(.*?)[^&]+/)[0]; 
Run Code Online (Sandbox Code Playgroud)