我如何简单地获取GET
和POST
使用JQuery?
我想做的是这样的:
$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
Ates Goral.. 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"]);
对于POST参数,您可以将$_POST
JSON格式的对象序列化为标记:
当你在它(在服务器端做事)时,你也可以在PHP上收集GET参数:
var $_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);
你的提取方法不考虑没有值的参数("?foo&bar = baz"=> {foo:"",bar:"baz"}). (3认同)
Leandro Ardi.. 16
有一个jQuery插件可以获得名为.getUrlParams的 GET参数
对于POST,唯一的解决方案是使用PHP将POST回显到javascript变量,就像Moran建议的那样.
对于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参数,您可以将$_POST
JSON格式的对象序列化为标记:
当你在它(在服务器端做事)时,你也可以在PHP上收集GET参数:
var $_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);
有一个jQuery插件可以获得名为.getUrlParams的 GET参数
对于POST,唯一的解决方案是使用PHP将POST回显到javascript变量,就像Moran建议的那样.
为什么不使用好的旧PHP?例如,假设我们收到一个GET参数'target':
function getTarget() { var targetParam = ""; //alert(targetParam); }
或者你可以使用这个http://plugins.jquery.com/project/parseQuery,它比大多数(缩小449字节)小,返回一个表示名称 - 值对的对象.