JQuery का उपयोग करके URL बदलें और पुनर्निर्देशित करें


132

मेरे पास कुछ कोड है,

<form id="abc">
  <input type="text" id="txt" />
</form>

और अब मैं इस तरह से पुनर्निर्देशित करना चाहता हूं,

var temp = $("#txt").val();
url = "http://example.com/" + temp;
window.location.replace(url);
// or window.location(url);

वैसे भी इसे हल करने के लिए jQuery में है? यह अभी भी मेरे पास है url = http://example.com


आप सभी को बहुत बहुत धन्यवाद! अब मुझे अभी भी नहीं पता है कि window.location और window.location.replace के बीच क्या अंतर है। मेरे उदाहरण में मुझे बस अपने पृष्ठ पर url पोस्ट करने की आवश्यकता है जैसे: abc.com/abc abc के साथ अपने डेटाबेस में खोज करने के लिए abc पाने के लिए क्या उपयोगकर्ता टाइपिंग और प्रेस या बटन टाइप करता है लेकिन वे हमेशा abc.com पर लौटते हैं ? नाम = एबीसी तो मुझे लगता है कि मैं सबमिट इवेंट में रीडायरेक्ट करने के लिए ट्रिगर कर सकता हूं और अपने यूआरएल को जो मैं चाहता हूं उसे बदल सकता हूं लेकिन वे अभी भी कुछ नहीं करते हैं। बस, फिर से शुक्रिया!
गैकोन

3
मैंने यहां window.location और window.location.replace के बीच के अंतर को समझाया: stackoverflow.com/questions/846954/…
मैथियास ब्यनेंस

जवाबों:


343

जैसा कि अन्य उत्तरों में बताया गया है, आपको ऐसा करने के लिए jQuery की आवश्यकता नहीं है; आप बस मानक गुणों का उपयोग कर सकते हैं।

हालाँकि, ऐसा लगता है कि आपको window.location.replace(url)और के बीच का अंतर मालूम नहीं है window.location = url

  1. window.location.replace(url)पता बार में वर्तमान स्थान को एक नए द्वारा बदल देता है। वह पृष्ठ जो फ़ंक्शन को कॉल कर रहा था, ब्राउज़र इतिहास में शामिल नहीं किया जाएगा। इसलिए, नए स्थान पर, अपने ब्राउज़र में बैक बटन पर क्लिक करने से आप उस पृष्ठ पर वापस चले जाएंगे, जिसे आप रीडायरेक्टिंग जावास्क्रिप्ट वाले दस्तावेज़ पर जाने से पहले देख रहे थे।
  2. window.location = urlनए स्थान पर रीडायरेक्ट करता है। इस नए पृष्ठ पर, आपके ब्राउज़र का बैक बटन मूल पृष्ठ पर इंगित करेगा जिसमें रीडायरेक्टिंग जावास्क्रिप्ट होगा।

बेशक, दोनों के पास उनके उपयोग के मामले हैं, लेकिन यह मुझे ऐसा लगता है जैसे इस मामले में आपको उत्तरार्द्ध के साथ रहना चाहिए।

पुनश्च: आप http:अपने जावास्क्रिप्ट की लाइन 2 के बाद शायद दो स्लैश भूल गए :

url = "http://abc.com/" + temp;

5
लेकिन बहुत सही होने के लिए आपको window.location.href के बजाय window.location सेट करना चाहिए। जबकि आजकल दोनों काम करते हैं, बाद वाला एक वस्तु है (और एक प्राचीन IE संस्करण में एक स्ट्रिंग आवंटित करने के लिए असमर्थित है ...)
विक्टर

1
@ विक्टर [उद्धरण वांछित]
मैथियास ब्यनेंस

1
@ विक्टर जो किसी भी प्राचीन IE संस्करण को सूचीबद्ध नहीं करता है, जहां यह टूट जाता है। @ बॉबिन्स की टिप्पणी सही है: stackoverflow.com/a/10016109/96656#comment18225061_10016109
मैथियास ब्यनेंस

माइनस 1. पर्याप्त नहीं jQuery
वरुणआग

41

तुम सच बताओ, मुझे अभी भी वह नहीं मिला, जो तुम्हें चाहिए, लेकिन

window.location(url);

होना चाहिए

window.location = url;

window.location संदर्भ पर एक खोज आपको बताएगी।


18

jQuery के पास इसके लिए कोई विकल्प नहीं है, और न ही इसमें एक होना चाहिए। यह पूरी तरह से मान्य जावास्क्रिप्ट है और इसके लिए आवरण कार्यों को प्रदान करने के लिए jQuery का कोई कारण नहीं है।

jQuery जावास्क्रिप्ट के शीर्ष पर एक पुस्तकालय है, भले ही आप jQuery का उपयोग करें आप अभी भी सामान्य जावास्क्रिप्ट का उपयोग कर सकते हैं।

Btw window.location एक फ़ंक्शन नहीं है, लेकिन एक संपत्ति है जिसे आपको इस तरह सेट करना चाहिए:

window.location = url;

jQuery का दावा करने के लिए डाउन वोट में इसके लिए एक विधि नहीं है (भले ही यह अनावश्यक ओवरकिल है और इसकी सिफारिश नहीं की जानी चाहिए) $ jq (खिड़की) .attr ("स्थान", " yourdomain.com" ); या $ (स्थान) .attr ('href', url);
लूटने

9
उस डाउनवोट को पूर्ववत करने के लिए तैयार किया गया। पिम की प्रतिक्रिया को आसानी से पढ़ सकते हैं "इसके लिए jQuery में कोई विशिष्ट विधि नहीं है।" शाब्दिक शब्दार्थों को घटाना उस विशेषाधिकार का दुरुपयोग है।
निगेल एंजेल

क्योंकि आपको पता है ... यह सही है "इसके लिए jQuery में कोई विशिष्ट तरीका नहीं है।", आप इस तरह के बदसूरत समाधान क्यों करना चाहेंगे: $ jq (विंडो) .attr ("स्थान", "yourdomain)। कॉम "); जब आपके पास window.location = url जैसा कुछ हो सकता है;
रोडोल्फो अबरका

11
var temp="/yourapp/";
$(location).attr('href','http://abcd.com'+temp);

यह कोशिश करो ... एक विकल्प के रूप में इस्तेमाल किया


3

इसे इस्तेमाल करे...

$("#abc").attr("action", "/yourapp/" + temp).submit();

इसका क्या मतलब है:

id"एबीसी" के साथ एक फ़ॉर्म खोजें , इसे attribute"एक्शन" नाम दें और फिर सबमिट करें ...

यह मेरे लिए काम करता है ... !!!


1
योग्य, यह कुछ मजेदार एस है! हालांकि मुझे यह विचार पसंद है। रचनात्मक होने के लिए अंक!
एरिक बिशर्ड

-2

आप इसे jquery के बिना सरल कर सकते हैं

location = "https://example.com/" + txt.value


यह काम नहीं करता है, और मैं यह नहीं देख सकता कि यह कैसे हो सकता है। स्थान कोई वैश्विक नहीं है। window.location है। संपादित करें: हां सत्यापित किया गया। यह काम नहीं करता है, कम से कम क्रोम में नहीं। अपने उदाहरण को window.location पर अपडेट करने पर विचार करें
Shayne

अजीब - मेरे क्रोम, फ़ायरफ़ॉक्स, सफारी में यह काम करता है - स्थान वैश्विक संपत्ति है - जैसे जब मैं क्रोम कंसोल में टाइप करता हूं: location = 'https://google.com'तब यह पृष्ठ बदलता है - क्या आप अन्य ब्राउज़रों पर कोशिश करते हैं?
कामिल Kiełczewski

@Shayne जब आप टाइप करते हैं thisऔर this.locationकंसोल में होते हैं - आप क्या देखते हैं?
कामिल Kiełczewski

यह। केवल तब काम करता है जब "यह" विंडो का संदर्भ दे रहा हो। जो शायद ही कभी होने वाला हो। स्पष्ट हमेशा इंप्लांट की तुलना में बेहतर होता है, खासकर यदि आप अपने कोड पोर्टेबल या पुन: प्रयोज्य नहीं होने पर आश्चर्यचकित नहीं होना चाहते हैं
Shayne

हाँ, आप सही हैं - हालाँकि मुझे आश्चर्य है: आपके ब्राउज़र में ऑब्जेक्ट का thisसंदर्भ क्यों नहीं है window(और स्निपेट ऊपर काम नहीं करता है)? (ब्राउज़रों के वैश्विक संदर्भ में इसे विंडोज़ ऑब्जेक्ट पर सेट किया जाना चाहिए )
कामिल कील्वेज़स्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.