Help needed in using escape function in javascript -


मैं अपने jsp फ़ाइल में follwing javascript फ़ंक्शन का उपयोग कर रहा हूं

  & lt; script language = "जावास्क्रिप्ट" & gt; फ़ंक्शन ओपनपोप () {var firstname = escape (& lt;% = addressBean.getFirstName ()% & gt;); Var lastname = escape (& lt;% = addressBean.getLastName ()% & gt;); चेतावनी (firstname); चेतावनी (उपनाम); Var mywindow = window.open ('& lt;% = link ("*", "BBFBUpdatePickupInfo")% & gt; और amp; ShoppingCartKey = & lt;% = कार्टकी% & gt; और ऑपरेशन = & lt;% = ऑपरेशन% & gt; & amp; ; isEproAcc = & LT;% = isEpro% & gt; & amp; firstName = "+ firstname +" & amp; lastName = "+ lastname +" & amp; क्षेत्रकोड = & LT;% = addressBean.getPhoneAreaCode ()% & gt; & amp; phoneNum = & LT;% = addressBean.getPhoneNumber ()% & gt; ',' स्थिर ',' चौड़ाई = 625, ऊंचाई = 500, उपकरण पट्टी = 0, स्थान = 0, निर्देशिका = 0, स्थिति = 0, मेनूबार = 0, स्क्रॉलबार = हाँ, आकार बदलने योग्य = 0 '); mywindow.focus (); } & Lt; / script & gt;  

जब addressBean.getFirstName () और addressBean.getLastName () नामों को "RED" जैसे प्रथम नाम और "व्हाइट" को अंतिम नाम के रूप में देता है तो यह ठीक काम कर रहा है। लेकिन जब ये दो विधियां पहले नाम के रूप में "वेलेंटाइन" नाम से दूसरे नाम के रूप में लौट जाती हैं तो दूसरे नाम के रूप में यह जावास्क्रिप्ट त्रुटि नीचे फेंक रहा है।

  त्रुटि: निरस्त स्ट्रिंग निरंतर कोड: 0 < / कोड>  

कृपया मुझे इस समस्या से बाहर आने में मदद करें। अग्रिम में धन्यवाद

(आपने यह नहीं बताया है कि आपकी सर्वर-साइड लैंग्वेज है I जावा मान लिया गया है, इसलिए यदि कुछ और है तो समायोजन करें।)

ब्राउज़र के लिए वास्तव में क्या भेजा जा रहा है, इसके बारे में सोचें:

  var firstname = escape (& lt; % = addressBean.getFirstName ()% & gt;);  

जब यह निकलता है, तो यह ऐसा दिखेगा:

  var firstname = escape (JOE);  

... जो लगभग निश्चित रूप से नहीं है जो आप चाहते हैं - शुरुआत के लिए कोई उद्धरण नहीं है।

तो पहले हमें उद्धरण की आवश्यकता है:

  var firstname = escape ("& lt;% = addressBean.getFirstName ()% & gt;");  

लेकिन हमें स्ट्रिंग में किसी भी चीज़ से बचने की ज़रूरत है, जिसके परिणामस्वरूप जावास्क्रिप्ट स्ट्रिंग में एक समस्या हो सकती है (सर्वर पर, ब्राउज़र को भेजते समय)। कफ बंद, जो कम से कम उद्धरण और बैकस्लैश होंगे, इसलिए:

  var firstname = escape ("& lt;% = addressBean.getFirstName ()। Replace (" \\ "," \\\\ ")। प्रतिस्थापित करें (" \ "", "\\\"%)%> ");  

... लेकिन यह पूरी तरह से बिल्कुल नहीं है, आपको कई अन्य मामलों (स्ट्रिंग में नई लाइनें आदि) को संभालना होगा। वास्तव में, आप उपयोगिता कार्य चाहते हैं जो काम अच्छी तरह से करता है, (उदाहरण के लिए) यूनिकोड दृश्यों आदि को संभालना चाहता है, अगर कोई संभावना है कि वे स्रोत डेटा में होंगे (जो वहां बहुत अधिक है, यदि यह शामिल है

और कई ने ध्यान दिया है कि escape के बजाय, आप encodeurIComponent चाहते हैं।


Comments

Popular posts from this blog

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -

php - What is the best way to get the URL of a 404'd file after redirect? -

sql - dynamically varied number of conditions in the 'where' statement using LINQ -