Bagaimana cara saya mendapatkan GETdan POSTmenilai dengan JQuery?
Yang ingin saya lakukan adalah seperti ini:
$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
Bagaimana cara saya mendapatkan GETdan POSTmenilai dengan JQuery?
Yang ingin saya lakukan adalah seperti ini:
$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
Jawaban:
Untuk parameter GET, Anda dapat mengambilnya dari 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"]);
Untuk parameter POST, Anda dapat membuat serial $_POSTobjek dalam format JSON menjadi <script>tag:
<script type="text/javascript">
var $_POST = <?php echo json_encode($_POST); ?>;
document.write($_POST["test"]);
</script>
Saat Anda melakukannya (melakukan sesuatu di sisi server), Anda mungkin juga mengumpulkan parameter GET di PHP:
var $_GET = <?php echo json_encode($_GET); ?>;
Catatan: Anda memerlukan PHP versi 5 atau lebih tinggi untuk menggunakan json_encodefungsi bawaan.
Pembaruan: Berikut implementasi yang lebih umum:
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);
Ada plugin untuk jQuery untuk mendapatkan GET params yang disebut .getUrlParams
Untuk POST, satu-satunya solusi adalah menggemakan POST ke dalam variabel javascript menggunakan PHP, seperti yang disarankan Moran.
mengapa tidak menggunakan PHP lama yang bagus? misalnya, katakanlah kita menerima parameter GET 'target':
function getTarget() {
var targetParam = "<?php echo $_GET['target']; ?>";
//alert(targetParam);
}
Atau Anda dapat menggunakan http://plugins.jquery.com/project/parseQuery yang satu ini , lebih kecil dari kebanyakan (dikecilkan 449 byte), mengembalikan objek yang mewakili pasangan nama-nilai.
Dengan bahasa sisi server apa pun, Anda harus memancarkan variabel POST ke dalam javascript.
.BERSIH
var my_post_variable = '<%= Request("post_variable") %>';
Berhati-hatilah dengan nilai kosong. Jika variabel yang Anda coba keluarkan benar-benar kosong, Anda akan mendapatkan kesalahan sintaks javascript. Jika Anda tahu itu string, Anda harus membungkusnya dengan tanda kutip. Jika itu bilangan bulat, Anda mungkin ingin menguji untuk melihat apakah itu benar-benar ada sebelum menulis baris ke javascript.
Anda dapat mencoba plugin Query String Object untuk jQuery.
Inilah sesuatu untuk mengumpulkan semua GETvariabel dalam objek global, rutinitas yang dioptimalkan selama beberapa tahun. Sejak munculnya jQuery, sekarang tampaknya tepat untuk menyimpannya di jQuery itu sendiri, saya memeriksa dengan John tentang implementasi inti potensial.
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('&'))
});
Contoh penggunaan:
switch ($.Q.event) {
case 'new' :
// http://www.site.com/?event=new
$('#NewItemButton').trigger('click');
break;
default :
}
Semoga ini membantu. ;)
Plugin jQuery tampak bagus tetapi yang saya butuhkan adalah fungsi js cepat untuk mengurai parameter get. Inilah yang saya temukan.
Jika $ _GET Anda multidimensi, ini mungkin yang Anda inginkan:
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]);
}
});
sederhana, namun berguna untuk mendapatkan vars / values dari 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;
}
Saya menemukannya di suatu tempat di internet, hanya memperbaiki beberapa bug
Gunakan fungsi berikut:
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;
};
dan mengakses variabel seperti di vars['index']mana 'index'nama variabel get.
http://foo.com/?a=b#bar. Ia pikir b#baradalah nilai untuk a.
Sekadar catatan, saya ingin tahu jawaban atas pertanyaan ini, jadi saya menggunakan metode PHP:
<script>
var jGets = new Array ();
<?
if(isset($_GET)) {
foreach($_GET as $key => $val)
echo "jGets[\"$key\"]=\"$val\";\n";
}
?>
</script>
Dengan begitu semua javascript / jquery saya yang berjalan setelah ini dapat mengakses semua yang ada di jGets. Saya rasa ini adalah solusi elegan yang bagus.
Pendekatan saya:
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]);
})();