2010-09-16 5 views
6

मेरे पास दो HTML पृष्ठ हैं, example1.html और example2.htmlदो HTML पृष्ठों के बीच चर का आदान-प्रदान कैसे करें?

क्वेरी स्ट्रिंग का उपयोग करके example1.html से example2.html पर वेरिएबल्स कैसे पास कर सकते हैं, और किसी भी सर्वरसाइड कोड का उपयोग किये बिना example2.html में उस चर को पुनर्प्राप्त करें?

+0

[संभावित रूप से एक पृष्ठ से जावास्क्रिप्ट ऑब्जेक्ट को कैसे पास करें] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/7709289/how-to-pass-javascript-object-from-one-page-to-other) – jherax

+0

संभावित डुप्लिकेट [पृष्ठों पर लगातार जावास्क्रिप्ट चर?] (Https://stackoverflow.com/questions/1981673/persist-javascript-variables-across-pages) – jherax

+1

संभावित प्रतिलिपि [पृष्ठ रीलोड पर वैश्विक परिवर्तनीय उपयोग] (http : //stackoverflow.com/q/29986657/2247494) – jherax

उत्तर

8

example1.html में:

<a href='example2.html?myVar1=42'>a link</a> 
<a href='example2.html?myVar1=43'>another link</a> 

या इच्छानुसार जावास्क्रिप्ट के साथ लिंक उत्पन्न करते हैं। बस सुनिश्चित करें कि? VarName = मान example2.html किसी भी तरह के अंत में हो जाता है।

फिर, उदाहरण 2.html में, आप क्वेरी स्ट्रिंग को पार्स करने के लिए जावास्क्रिप्ट का उपयोग करते हैं जो example2 आया था।

ऐसा करने के लिए, आप क्वेरीस्ट्रिंग का प्रयास कर सकते हैं।

// Adapted from examples on the Querystring homepage. 
var qs = new Querystring(); 
var v1 = qs.get("myVar1"); 

वैकल्पिक रूप से, parent.document.URL में आपके द्वारा किए गए पृष्ठ के लिए संपूर्ण यूआरआई शामिल है। आपको लगता है कि निकाल सकते:

parent.document.URL.substring(parent.document.URL.indexOf('?'), parent.document.URL.length); 

और इसे मैन्युअल रूप से पार्स चर आप यूआरआई में इनकोडिंग खींचने के लिए।

संपादित करें: 'नया क्वेरीस्ट्रिंग()' का 'नया' हिस्सा भूल गए। ओह ...

+0

उत्तर के लिए धन्यवाद मैंने दूसरी विधि की कोशिश की जो आपने अपना काम ठीक करने का सुझाव दिया , मैं var a = parent.document.URL.substring (parent.document.URL.indexOf ('myVar1 ='), parent.document.URL.length) की तरह writtten है; अलर्ट (ए); – mahesh

+0

लेकिन समस्या यह है कि मुझे केवल 42 को चर में स्टोर करना होगा, जब मैं चेतावनी लिखता हूं (ए); यह myVar1 = 42 प्रदर्शित करता है, लेकिन मैं केवल 42 – mahesh

+0

को एक त्वरित नज़र से कैसे प्रदर्शित करूं (मैं एक शुरुआती व्यक्ति भी इसे समझने की कोशिश कर रहा हूं), उदाहरण कोड में 0 की अनुक्रमणिका '?' से पहले है। इंडेक्स को एक वैरिएबल में सेव करें। परिवर्तनीय के नाम पर एक स्ट्रिंग वैरिएबल सेट करें ताकि आप लंबाई की संपत्ति को माप सकें। फिर जब आप अपने मामले के मूल्य को कॉल करते हैं तो यह var myring = "? MyVar1 =" होगा; फिर चेतावनी (एक + myString.Length); दाईं ओर स्थानांतरित करने के लिए आवश्यक वर्णों की संख्या में स्थानांतरित करने के लिए। – DavidG

1

आप मूल्यों का आदान-प्रदान करने के लिए कुकीज़ और क्वेरीस्ट्रिंग का उपयोग कर सकते हैं।

3

एचटीएमएल/HTTP स्टेटलेस है, इसका मतलब है कि, जो आपने पिछले पृष्ठ पर किया/देखा, पूरी तरह से वर्तमान पृष्ठ से डिस्कनेक्ट हो गया है। प्रश्न यह है कि दो पृष्ठों के बीच चर के अंत में कैसे पारित किया जाए। (चूंकि HTTP स्टेटलेस है, हर बार जब आप पेज लोड करते हैं तो यह जावास्क्रिप्ट में जो कुछ भी सेट होता है, उसके प्रारंभिक मानों का उपयोग करेगा। आप जेएस में ग्लोबल वैरिएबल सेट नहीं कर सकते हैं और पेज को फिर से लोड करने के बाद बस यह मान बना सकते हैं।

कुछ अन्य तरीकों से आप मूल्य को स्टोर कर सकते हैं ताकि आप इसे जावास्क्रिप्ट का उपयोग करके लोड पर प्रारंभ कर सकें)

1) - फ्रंट एंड स्टोरेज का उपयोग करके सरल, जो किसी भी ब्राउज़र (कुकी, सत्र संग्रहण, स्थानीय भंडारण - जो एक डोमेन भर में सुरक्षा कारणों से उपलब्ध है -> इसका मतलब है कि आप केवल एक डोमेन के लिए इस स्टोरेज पर डेटा सहेज सकते हैं, दूसरा डोमेन इस डेटा तक नहीं पहुंच सकता है) और एक पृष्ठ में मूल्य डालकर दूसरों में मूल्य प्राप्त कर सकता है। यह देखते हुए कि:

कुकी, आप किस समय निर्धारित किया है जब तक डेटा की बचत होती है जब तक ब्राउज़र डिफ़ॉल्ट टैब बंद कर दिया

सत्र संग्रह डेटा बचाता है।

स्थानीय संग्रहण तब तक डेटा सहेजता है जब तक कि ब्राउज़र पूरी तरह से बंद नहीं हो जाता है और टैब (पृष्ठों) के बीच डेटा साझा करता है, यह किसी भी समय समाप्ति तिथि के साथ डेटा संग्रहीत करता है, और केवल जावास्क्रिप्ट के माध्यम से साफ़ हो जाता है, या ब्राउज़र कैश/स्थानीय रूप से संग्रहीत डेटा को साफ़ करता है - कुकी समाप्ति के विपरीत।

2) - तत्व को विशेषताएं जोड़ें जब यह अजाक्स के माध्यम से उत्पन्न समारोह प्रस्तुत करना

<a href='example2.html?action=getAll&element=product&id=1'>a link</a> 
<a href='example2.html?action=getAll&element=product&id=2'>another link</a> 

-> और क्लिक के बाद इस तत्व निर्माण "यूआरएल /?कार्रवाई = getAll & तत्व = उत्पाद & आईडी = 1 "और दूसरे पृष्ठ में जो कार्रवाई की जाएगी, आप इस यूआरएल को पार्स कर सकते हैं और उचित पैरामीटर के साथ उचित अजाक्स को कॉल कर सकते हैं।

+0

यह सबसे अच्छा जवाब है – Xin

संबंधित मुद्दे