2010-07-21 9 views
28

मैं समझता हूं कि जेसनपी एक ही मूल नीति के आसपास एक तकनीक है। आप मूल रूप से स्क्रिप्ट टैग में अपने जेसन सेवारत सर्वर एंडपॉइंट का संदर्भ लेते हैं, क्योंकि स्क्रिप्ट टैग को SO नीति से छूट दी जाती है।क्या JSONP को सर्वर संशोधन की आवश्यकता है?

मेरा प्रश्न है: मान लें कि सर्वर का मानना ​​है कि जेसन की सेवा करता है, क्या क्लाइंट में जेसनपी का उपयोग करने के लिए सर्वर पर कोई संशोधन आवश्यक है?

मेरे पास कोई सोच है, लेकिन यकीन है कि होना चाहता हूँ ....

उत्तर

33

हाँ, JSONP थोड़ा अलग है जब यह renders है, इसलिए अपने सर्वर इसे समर्थन की जरूरत है।

JSON इस तरह दिखता है:

{ "name": "value" } 

JSONP जबकि इस तरह दिखता है:

functionName({ "name": "value" }); 

आप का समर्थन करता है तो यह आपको कवर कर रहे हैं प्रयोग कर रहे हैं जो कुछ भी है, लेकिन यह सिर्फ समर्थन के रूप में ही नहीं है JSON। सर्वर अनुरोध पर हो जाता है जब, उदाहरण के लिए: http://example.com/json?callback=functionName, ऊपर तुम क्या प्रस्तुत करना चाहिए, क्योंकि यह कैसे पेज में लग रहा है यह है:

<script type="text/javascript" src="http://example.com/json?callback=functionName"></script> 

यह कुछ ऐसा है की जरूरत है वापस करने चलाता है का मतलब है, एक उदाहरण के रूप में, यह मान्य है:

:

<script type="text/javascript"> 
    functionName({ "name": "value" }); 
</script> 

तो अपने सर्वर समर्थन JSONP यह प्रभावी रूप से इस होगा नहीं था

... और आपको वाक्यविन्यास त्रुटियां मिलेंगी, क्योंकि यह वैध जावास्क्रिप्ट नहीं है।

+1

और आपके जेएस कोड को फ़ंक्शननाम लागू करना है? क्या जेएस ऑब्जेक्ट्स प्राप्त करने के लिए उसे जेसन को निकालने की ज़रूरत है? – hvgotcodes

+0

@hvgotcodes - हां, क्लाइंट में वह फ़ंक्शन है (उदाहरण के लिए jQuery डिफ़ॉल्ट रूप से एक गतिशील बनाता है)। यह जेएसओएन को फ़ंक्शन में पास किया जा रहा है (जेएसओएन वैध ऑब्जेक्ट शाब्दिक नोटेशन है, बस इसका सबसेट है), इसलिए कोई 'eval()' करने की आवश्यकता नहीं है। –

+1

मुझे समझ में नहीं आता कि आपको इसे विकसित करने की आवश्यकता क्यों नहीं है। जेएसएसपी के बावजूद, अधिकांश जेएस पुस्तकालयों ने जेसन को वास्तविक जेएस ऑब्जेक्ट्स जेसन का प्रतिनिधित्व करने के लिए एक्सएचआरएस के माध्यम से वापस कर दिया है? – hvgotcodes

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