मैं बस कैसे प्राप्त करूं GETऔर POSTJQuery के साथ मूल्य क्या करूं
मैं ऐसा कुछ करना चाहता हूं:
$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
मैं बस कैसे प्राप्त करूं GETऔर POSTJQuery के साथ मूल्य क्या करूं
मैं ऐसा कुछ करना चाहता हूं:
$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
जवाबों:
जीईटी मापदंडों के लिए, आप उन्हें इनसे ले सकते हैं 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); ?>;
नोट: आपको अंतर्निहित 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 params प्राप्त करने के लिए jQuery के लिए एक प्लगइन है
POST के लिए एकमात्र समाधान PHP का उपयोग करके जावास्क्रिप्ट चर में POST की गूंज है, जैसे मोरन ने सुझाव दिया।
अच्छे पुराने PHP का उपयोग क्यों न करें? उदाहरण के लिए, मान लें कि हमें एक GET पैरामीटर 'लक्ष्य' प्राप्त हुआ है:
function getTarget() {
var targetParam = "<?php echo $_GET['target']; ?>";
//alert(targetParam);
}
या आप इस एक का उपयोग कर सकते हैं http://plugins.jquery.com/project/parseQuery , यह सबसे अधिक (छोटा 449 बाइट्स) से छोटा है, नाम-मूल्य जोड़े का प्रतिनिधित्व करने वाली एक वस्तु देता है।
किसी भी सर्वर-साइड भाषा के साथ, आपको POST चर को जावास्क्रिप्ट में फेंकना होगा।
नेट
var my_post_variable = '<%= Request("post_variable") %>';
बस खाली मूल्यों से सावधान रहें। यदि आप जिस वेरिएबल का उत्सर्जन करने का प्रयास करते हैं, वह वास्तव में खाली है, तो आपको जावास्क्रिप्ट सिंटैक्स त्रुटि मिलेगी। यदि आप जानते हैं कि यह एक स्ट्रिंग है, तो आपको इसे उद्धरणों में लपेटना चाहिए। यदि यह पूर्णांक है, तो आप यह देखने के लिए परीक्षण करना चाह सकते हैं कि क्या यह वास्तव में जावास्क्रिप्ट को लाइन लिखने से पहले मौजूद है।
आप jQuery के लिए क्वेरी स्ट्रिंग ऑब्जेक्ट प्लगइन की कोशिश कर सकते हैं ।
GETएक वैश्विक वस्तु में सभी चर इकट्ठा करने के लिए यहां कुछ है , एक दिनचर्या कई वर्षों से अनुकूलित है। JQuery के उदय के बाद से, अब उन्हें jQuery में ही संग्रहीत करना उचित लगता है, जॉन के साथ संभावित मुख्य कार्यान्वयन पर जाँच कर रहा है।
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 बहुआयामी है, तो यह वही हो सकता है जो आप चाहते हैं:
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 से var / मान प्राप्त करने के लिए सरल, लेकिन अभी तक उपयोगी है:
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'का नाम है।
http://foo.com/?a=b#bar। यह सोचता b#barहै कि इसके लिए मूल्य है a।
केवल रिकॉर्ड के लिए, मैं इस प्रश्न का उत्तर जानना चाहता था, इसलिए मैंने एक PHP विधि का उपयोग किया:
<script>
var jGets = new Array ();
<?
if(isset($_GET)) {
foreach($_GET as $key => $val)
echo "jGets[\"$key\"]=\"$val\";\n";
}
?>
</script>
इस तरह मेरे सभी जावास्क्रिप्ट / jquery जो इसके बाद चलता है सब कुछ jGets में पहुँच सकता है। इसका एक अच्छा सुरुचिपूर्ण समाधान मुझे लगता है।
मेरा दृष्टिकोण:
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]);
})();