2012-03-21 14 views
7

मैं जानता हूँ कि यह कुछ सरल है कि मैं सिर्फ किसी भी तरह याद कर रहा हूँ होने जा रहा है, लेकिन यहाँ यह जाता है:ColdFusion/जावास्क्रिप्ट पलायन एकल कोट

मैं एक ColdFusion आवेदन जहां एक उपयोगकर्ता एकाधिक स्क्रीन पर पाठ दर्ज कर सकते है। मेरे पास एक जावास्क्रिप्ट फ़ंक्शन है जो डेटाबेस में संग्रहीत किए गए दर्ज किए गए टेक्स्ट को चेक करता है और एक पुष्टिकरण विंडो पॉप अप करता है कि क्या वे परिवर्तनों को सहेजना/त्यागना चाहते हैं।

यदि उपयोगकर्ता द्वारा दर्ज किए गए टेक्स्ट में उद्धरण (एकल या डबल) होता है, तो जावास्क्रिप्ट पूरी तरह से मर जाता है। सामग्री की मिलान करने की जांच करने की क्षमता बनाए रखने के दौरान मुझे उद्धरणों से बचने की आवश्यकता है।

मैंने भागने() और प्रतिस्थापित() कार्यों (अकेले और एक साथ) की कोशिश की है, लेकिन कुछ भी काम नहीं कर रहा है।

उदाहरण जावास्क्रिप्ट:

function change_question(){ 
    var feedback = document.getElementById('feedback').value; //this is what the user has entered on the page 
    var stored_feedback = "#trim(StoredFeedback)#"; //this is what is stored in the database; retrieved via ColdFusion 

    if (feedback != stored_feedback) { 
     if (confirm('You have unsaved data on the page. Do you wish to discard your changes?')) { 
      //go to next page 
     } 
    } 
    else { 
      //go to next page 
    } 
} 

धन्यवाद।

+0

यदि कोई JSON-एन्कोडिंग उपयोगिता है, तो इसका उपयोग करें। – Pointy

उत्तर

12

jsStringFormat में बनाया जावास्क्रिप्ट

var stored_feedback = "#jsStringFormat(StoredFeedback)#"; 
+0

यह सही है, धन्यवाद सैम! एक प्रश्न था - मैं फीडबैक वैरिएबल पर इसका उपयोग कैसे कर सकता हूं (यानी उपयोगकर्ता ने क्या दर्ज किया है?) – shimmoril

+0

संपादित करें: कभी नहीं, मैंने इसे समझ लिया: 'var feedback_string = document.getElementById ('फीडबैक')। मूल्य; var प्रतिक्रिया = #jsStringFormat ('feedback_string') #; ' – shimmoril

0

मैं ColdFusion पता नहीं लेकिन डॉक्स के अनुसार:

var stored_feedback = #SerializeJSON(trim(StoredFeedback))#; 

मुझे लगता है कि आप उद्धरण स्पष्ट रूप से जोड़ने के लिए, एक स्ट्रिंग के रूप जब JSON करने के लिए धारावाहिक दोहरे उद्धरण चिह्नों के साथ पहुंचना चाहिए आवश्यकता नहीं होनी चाहिए वैसे भी। दोबारा, मैं इसे खुद का परीक्षण नहीं कर सकता।

+0

उपरोक्त में हैश वर्ण अनावश्यक हैं। –

+0

@ डेविडफैबर वास्तव में? कोल्डफ्यूजन कैसे पता चलेगा कि इसका कोड के रूप में व्याख्या किया जाना चाहिए और जावास्क्रिप्ट नहीं? – Pointy

+2

हैश वर्णों की आवश्यकता है। मेरा मानना ​​है कि डेविड सोच रहा था कि इच्छित लाइन सीएफ संदर्भ में थी, लेकिन यह एक जावास्क्रिप्ट संदर्भ में है जिसका उपयोग cfoutput –

0

के लिए बच जाएंगे आप एक ColdFusion समाधान के लिए देख रहे हैं, तो आप शायद इस का उपयोग करना चाहेंगे:

HTMLEditFormat(string) 

एचटीएमएल-भाग निकले स्ट्रिंग स्ट्रिंग। वापसी अक्षर हटा दिए जाते हैं; लाइन फीड वर्ण संरक्षित हैं। एचटीएमएल में विशेष अर्थ वाले पात्र एचटीएमएल चरित्र इकाइयों जैसे > में परिवर्तित हो गए हैं।

+0

धन्यवाद। डीबी से आने और आने वाली हर चीज HTMLEditFormat का उपयोग कर रही है, लेकिन उपयोगकर्ता द्वारा दर्ज (सहेजे गए) डेटा वास्तव में समस्या थी। – shimmoril

+0

HTML-escaping उपयोगी नहीं है जब मान जावास्क्रिप्ट कोड में आउटपुट होना है। – Pointy

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