どうすれば簡単に取得GET
してPOST
jQueryを使って値?
私がやりたいことは次のようなものです:
$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
どうすれば簡単に取得GET
してPOST
jQueryを使って値?
私がやりたいことは次のようなものです:
$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
回答:
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形式のオブジェクトを<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); ?>;
注:組み込みjson_encode
関数を使用するには、PHPバージョン5以降が必要です。
更新:より一般的な実装は次のとおりです。
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);
.getUrlParamsと呼ばれるGET パラメータを取得するためのjQueryのプラグインがあります
POSTの唯一の解決策は、Moranが提案したように、PHPを使用してPOSTをjavascript変数にエコーすることです。
古き良きPHPを使ってみませんか?たとえば、GETパラメータ 'target'を受け取ったとします。
function getTarget() {
var targetParam = "<?php echo $_GET['target']; ?>";
//alert(targetParam);
}
または、これをhttp://plugins.jquery.com/project/parseQueryの 1つで使用できます。これはほとんどのサイズよりも小さく(449バイトに縮小)、名前と値のペアを表すオブジェクトを返します。
サーバー側の言語では、POST変数をJavaScriptに出力する必要があります。
。ネット
var my_post_variable = '<%= Request("post_variable") %>';
空の値に注意してください。排出しようとする変数が実際に空の場合、JavaScript構文エラーが発生します。文字列であることがわかっている場合は、引用符で囲む必要があります。整数の場合は、JavaScriptに行を書き込む前に、実際に存在するかどうかをテストしてください。
jQueryのクエリ文字列オブジェクトプラグインを試すことができます。
これGET
は、グローバルオブジェクトのすべての変数を収集するものです。これは、数年にわたって最適化されたルーチンです。jQueryの登場以来、jQuery自体にそれらを格納することが適切に思われ、潜在的なコア実装についてJohnに確認しています。
jQuery.extend({
'Q' : window.location.search.length <= 1 ? {}
: function(a){
var i = a.length,
r = /%25/g, // Ensure '%' is properly represented
h = {}; // (Safari auto-encodes '%', Firefox 1.5 does not)
while(i--) {
var p = a[i].split('=');
h[ p[0] ] = r.test( p[1] ) ? decodeURIComponent( p[1] ) : p[1];
}
return h;
}(window.location.search.substr(1).split('&'))
});
使用例:
switch ($.Q.event) {
case 'new' :
// http://www.site.com/?event=new
$('#NewItemButton').trigger('click');
break;
default :
}
お役に立てれば。;)
jQueryプラグインはいいようですが、必要なのはgetパラメータを解析するための簡単なjs関数です。これが私が見つけたものです。
$ _GETが多次元の場合、これはあなたが望むものかもしれません:
var $_GET = {};
document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
function decode(s) {
return decodeURIComponent(s.split("+").join(" "));
}
//handling for multidimensional arrays
if(decode(arguments[1]).indexOf("[]") > 0){
var newName = decode(arguments[1]).substring(0, decode(arguments[1]).length - 2);
if(typeof $_GET[newName] == 'undefined'){
$_GET[newName] = new Array();
}
$_GET[newName].push(decode(arguments[2]));
}else{
$_GET[decode(arguments[1])] = decode(arguments[2]);
}
});
シンプルですが、URLから変数/値を取得するのに便利です。
function getUrlVars() {
var vars = [], hash, hashes = null;
if (window.location.href.indexOf("?") && window.location.href.indexOf("&")) {
hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
} else if (window.location.href.indexOf("?")) {
hashes = window.location.href.slice(window.location.href.indexOf('?') + 1);
}
if (hashes != null) {
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars[hash[0]] = hash[1];
}
}
return vars;
}
インターネット上のどこかで見つけた、いくつかのバグを修正した
次の関数を使用します。
var splitUrl = function() {
var vars = [], hash;
var url = document.URL.split('?')[0];
var p = document.URL.split('?')[1];
if(p != undefined){
p = p.split('&');
for(var i = 0; i < p.length; i++){
hash = p[i].split('=');
vars.push(hash[1]);
vars[hash[0]] = hash[1];
}
}
vars['url'] = url;
return vars;
};
変数vars['index']
に'index'
は、変数getの名前としてアクセスします。
http://foo.com/?a=b#bar
。b#bar
の価値だと思いますa
。
私のアプローチ:
var urlParams;
(window.onpopstate = function () {
var match,
pl = /\+/g, Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
query = window.location.search.substring(1);
urlParams = {};
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]);
})();