आप वास्तव में क्या प्रयास कर रहे हैं ऐसा नहीं कर सकते नाम दिया है। हालांकि आपके पास कुछ विकल्प हैं।
विधि 1: दूर से सुलभ वस्तु
एक सीएफसी में अपने समारोह (रों) ले जाएँ, और सीएफसी का URL के माध्यम से उन तक पहुंचें। इस एक्सेस विधि के लिए आवश्यक है कि फ़ंक्शन अनुमति विशेषता access='remote'
का उपयोग करें - यदि सार्वजनिक (डिफ़ॉल्ट) या निजी, (या पैकेज, या किसी भी भूमिका स्तर, आदि) पर सेट किया गया है तो आपको पहुंचने का प्रयास करते समय त्रुटि प्राप्त नहीं होगी यह दूरस्थ रूप से।
ऐसा करने के बाद, आप एक एसओएपी webservice बना रहे हैं और इसे AJAX के माध्यम से उपभोग कर रहे हैं।
http://domain.com/path/to/your.cfc?method=functionName&argument1=arg1Val&foo=bar&...
आप ColdFusion 8 है, तो आप भी returnFormat='format'
यूआरएल तर्क है, जो जो कुछ भी देशी ColdFusion डेटा आप पर अनुरोध किया प्रारूप पर लौटने वस्तुओं में परिवर्तित कर देंगे निर्दिष्ट कर सकते हैं: आप अपने jQuery अनुरोध में निम्न स्वरूप का उपयोग करके इस करते हैं मक्खी। यह जेएसओएन, एक्सएमएल, और डब्ल्यूडीडीएक्स का समर्थन करता है।
foo।सीएफसी
<cfcomponent output="false">
<cffunction name="foobar" output="false" access="remote" hint="...">
<cfargument name="arg1" type="string" required="true" />
...
<cfreturn someVar />
</cffunction>
</cfcomponent>
यूआरएल द्वारा प्रवेश:
http://domain.com/path/to/foo.cfc?method=foobar&arg1=some%20value&returnFormat=JSON
विधि 2: रिमोट प्रॉक्सी वस्तु
# 1 दृष्टिकोण का नकारात्मक पक्ष है कि वहाँ एक मामूली है दक्षता सीएफसी पर दक्षता हिट, इसलिए यदि यह विशेष AJAX विधि बहुत बार चलती है, और/या आपके सीएफसी में कुछ तरीकों से अधिक है या कुछ सौ लाइनों से अधिक लंबा है, आप हर अनुरोध के लिए इसे चालू नहीं करना चाहते हैं। इसके बजाय, आप remote proxy pattern में देखना चाहते हैं, जहां आप सीएफसी को कैश करते हैं जो एप्लिकेशन स्कोप में कार्यक्षमता लागू करता है, और एक अलग 'रिमोट प्रॉक्सी' सीएफसी है जो बहुत हल्का वजन है, और केवल प्रॉक्सी (इसलिए नाम) http अनुरोध और कैश किए गए सीएफसी के बीच।
इस पैटर्न में, आपके व्यवसाय ऑब्जेक्ट (जिसमे वास्तविक कार्य करता है) में access=public
(या पैकेज, आदि) हो सकता है, जब तक प्रॉक्सी तक पहुंच हो। हालांकि, प्रॉक्सी में access=remote
होना चाहिए।
proxy.cfc
<cfcomponent output="false">
<cffunction name="foobar" output="false" access="remote" hint="...">
<cfargument name="arg1" type="string" required="true" />
<!--- Application.foo is an instantiated object of foo.cfc --->
<cfreturn Application.foo.foobar(argumentCollection=arguments) />
</cffunction>
</cfcomponent>
पहुँच यूआरएल द्वारा:
http://domain.com/path/to/proxy.cfc?method=foobar&arg1=some%20value&returnFormat=JSON
विधि 3: यह स्वयं करें
अंत में, आप मा सकता है फ़ंक्शन आमंत्रण को धीरे-धीरे कार्यान्वित करें और एक CFM टेम्पलेट में वापस आएं। इस विधि में एक सीएफसी लिखने के (मामूली) प्रदर्शन हिट शामिल नहीं है, लेकिन आपके लिए अधिक टाइपिंग और असफलता के अतिरिक्त संभावित बिंदु होंगे। ऐसा करने के लिए, सीएफएम टेम्पलेट में अपने कार्यों को शामिल करें, और आउटपुट स्ट्रीम को इस तरह से इलाज करें: टेक्स्ट की एक स्ट्रीम जो ब्राउज़र पर वापस आ जाएगी।
आपको वापसी मूल्य में व्हाइटस्पेस प्रबंधित करने के लिए सावधान रहना चाहिए (output=false
फ़ंक्शन परिभाषाओं पर उपयोग करें, <cfsetting enableCFOutputOnly='true'
का उपयोग करने पर विचार करें, और केवल अपने अंतर के बारे में सावधान रहें)। यदि आपका jQuery अनुरोध JSON को वापस करने की अपेक्षा करता है, तो आपको इसे क्रमबद्ध करने की आवश्यकता है। (यदि आपको कोल्डफ्यूजन 6 या 7 पर जेएसओएन को डेटा क्रमबद्ध करने की आवश्यकता है, तो मैं JSONUtil)
इस दृष्टिकोण के साथ, आप अपने AJAX अनुरोध को URL पैरामीटर के साथ .cfm फ़ाइल पर इंगित करते हैं, और फिर आपको कोड लिखने की आवश्यकता होती है उन यूआरएल पैरामीटर और उन्हें फ़ंक्शन में पास कर देते हैं, और उसके बाद फ़ंक्शन के परिणाम प्रदर्शित होते हैं (अनिवार्य रूप से, AJAX अनुरोध पर लौटते हैं)।
foo.cfm
<cfsetting enableCFOutputOnly="true">
<cfparam name="arg1" default="defaultVal"/>
<cffunction name="foobar" output="false" access="remote" hint="...">
<cfargument name="arg1" type="string" required="true" />
...
<cfreturn someVar />
</cffunction>
<cfset variables.result = foobar(url.arg1) />
<cfoutput>#serializeJSON(variables.result)#</cfoutput>
नीचे रैज्ड का जवाब देखें। थोड़ा उच्च स्तर पर, आप मूल रूप से केवल http अनुरोध कर रहे हैं और परिणाम के साथ कुछ कर रहे हैं। आप StackOverflow मुखपृष्ठ पर एक ही कॉल कर सकते थे और HTML को वापस प्राप्त कर सकते थे कि आपका ब्राउज़र होगा, लेकिन इसके बजाय आप कस्टम कोल्डफ्यूजन पृष्ठ पर कॉल कर सकते हैं और जो भी पृष्ठ लौटाता है उसे वापस प्राप्त करें। आप इसे HTML के रूप में छोड़ सकते हैं, या कोल्डफ्यूजन रिटर्न एक्सएमएल, जेएसओएन, या यहां तक कि सादे पाठ भी कर सकते हैं। –