2013-08-30 7 views
5

प्रदर्शित नहीं कर रहा है इसलिए मूल रूप से मैं एक बाहरी php पेज पर AJAX कॉल करने के लिए jQuery पोस्ट का उपयोग कर रहा हूं और फिर मैं परिणाम को प्रतिबिंबित करता हूं, और फिर इसे वास्तविक पृष्ठ पर प्रदर्शित करता हूं।जावास्क्रिप्ट कोड AJAX के माध्यम से वापस किया जा रहा है, लेकिन

समस्या यह है कि जब भी बाहरी PHP पृष्ठ कुछ जावास्क्रिप्ट देता है, तो यह वास्तविक पृष्ठ पर प्रदर्शित नहीं होता है।

जावास्क्रिप्ट, लौटाए जाने

<script type="text/javascript">z_media = "SQgeKL07Nr"; z_autoplay=false; z_width=899; z_height=506;</script><script type="text/javascript" src="http://www.zunux.com/static/js/embed.js"></script> 

मेरे jQuery

function videoGrabber(mirror_id, video_version, firstVideo_version, videoNumber) { 


     jQuery.post("/path/to/my/external/php/file.php", {firstParam : mirror_id, secondParam : video_version, thirdParam : firstVideo_version}, function(data) { 
      //this is your response data from serv 
     console.log(data); 
     jQuery('#videoContainer').html(data); 

    }); 
     return false; 
} 

अब आम तौर पर, जब iframes में लौटाए जा रहे हैं, वे #videoContainer आईडी में बिल्कुल ठीक दिखा रहे हैं, फिर भी जब भी है कि जावास्क्रिप्ट एम्बेड कोड है लौटाया जा रहा है, यह #videoContainer आईडी में कुछ भी प्रदर्शित नहीं कर रहा है। लेकिन मैं निश्चित रूप से पुष्टि कर सकता हूं कि बाहरी PHP पृष्ठ डेटा लौटा रहा है क्योंकि मैं इसे कंसोल में देख सकता हूं। तो, मैं इसे कैसे ठीक कर सकता हूं?

+0

क्या आप 'console.log (डेटा)' .. का प्रयास कर सकते हैं? – ErickBest

+0

आप '# वीडियो कॉन्टेनर' में क्या दिखने की उम्मीद करते हैं? आपकी जेएस स्क्रिप्ट में कुछ चर हैं ... कोई दृश्य सामग्री नहीं है और कुछ भी नहीं जो जेएस फ़ंक्शन को कॉल करता है। – Steve

उत्तर

2

एक eval() वास्तव में आप को पुन: प्राप्त कर रहे हैं जावास्क्रिप्ट कोड को चलाने के लिए जोड़ने का प्रयास करें:

function videoGrabber(mirror_id, video_version, firstVideo_version, videoNumber) { 
    jQuery.post("/path/to/my/external/php/file.php", {firstParam : mirror_id, secondParam : video_version, thirdParam : firstVideo_version}, function(data) { 
     //this is your response data from serv 
     console.log(data); 
     jQuery('#videoContainer').html(data); 
     eval(data); 
    }); 
    return false; 
} 

BTW सुनिश्चित करें कि आप अच्छा security-- eval() हिंसा के लिए क्षमता का एक बहुत है अगर किसी को ajax कॉल को रोक सकता हो और अपना कोड इंजेक्ट करें। सिर्फ कच्चे जे एस कोड

ओह, और eval() के बाद से सिर्फ जावास्क्रिप्ट कोड का मूल्यांकन करने की कोशिश करने के लिए जा रहा है, तो आप अपनी वापसी कोड बदलने की जरूरत है (कोई <script> टैग):

z_media = "SQgeKL07Nr"; z_autoplay=false; z_width=899; z_height=506; 

निपटने के लिए केवल दूसरी बात के साथ इस प्रकार है:

<script type="text/javascript" src="http://www.zunux.com/static/js/embed.js"></script> 

आप बुला पेज (ajax कोड के साथ), तो यह कोड आप ajax के माध्यम से प्राप्त से गति प्रदान में है कि स्क्रिप्ट शामिल कर सकते हैं? तो अपने ajax कोड अंततः की तरह कुछ वापसी होगी:

z_media = "SQgeKL07Nr"; z_autoplay=false; z_width=899; z_height=506; triggerEmbedScript(); 
+0

कुछ अजीब कारणों से, मुझे यह त्रुटि मिल रही है 'अनकही सिंटेक्स त्रुटि: अप्रत्याशित टोकन <'। बिल्कुल यकीन नहीं है कि, मैंने केवल 'eval (डेटा) जोड़ा; ' – Maaz

+0

(#videoContainer) .html (डेटा) से पहले (डेटा) को निकाला जाना चाहिए (डेटा)? – Maaz

+0

यह "

0

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

आप वापसी iframes का उल्लेख करते हैं और वे ठीक से कैसे काम करते हैं। क्या आप कहने का मतलब है कि आपकी PHP फ़ाइल किसी भी HTML को सीधे आपके #videoContainer में डालने के लिए वापस कर सकती है? मैं इससे भी बचूंगा। AJAX अनुरोध द्वारा लौटाया गया डेटा अभी अज्ञात क्षेत्र से गुजर चुका है: इंटरनेट। एक बेहतर संरचना एमआईटीएम हमलों या एक्सएसएस को रोकने में मदद कर सकती है।

+0

मैं वर्डप्रेस का उपयोग कर रहा हूँ। मैंने functions.php फ़ाइल में एक फ़ंक्शन बनाया है, बाहरी php फ़ाइल बस उस फ़ंक्शन को चलाती है। – Maaz

0

जैसा कि मैंने उपरोक्त मेरी टिप्पणी में उल्लेख किया है, आपका लौटा जेएस कोड वास्तव में कुछ भी नहीं करता है। यह सिर्फ कुछ (वैश्विक) चर परिभाषित करता है। #videocontainer में कोई दृश्यमान सामग्री दिखाई नहीं दे सकती है और जेएस किसी भी कार्य को कॉल नहीं कर रहा है जो कुछ व्यवहार को ट्रिगर कर सकता है।

कहा जा रहा है, यदि आप लोड और कुछ जेएस है कि आप एक AJAX कॉल से प्राप्त कर निष्पादित करने के लिए चाहते हैं, तो मैं सिफारिश करेंगे बजाय, सामग्री के साथ पूरे script टैग को जोड़ने की कोशिश की है कि निम्न कार्य करें:

var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.text = data; 
document.body.appendChild(script); 
बेशक

यह केवल काम करता है आप (टैग) के बिना डेटा आप इस स्ट्रिंग के लिए अपने AJAX कॉल से प्राप्त कर सकते हैं बदल यदि: कुल मिलाकर

'z_media = "SQgeKL07Nr"; z_autoplay=false; z_width=899; z_height=506;' 

, अपने कोड इस तरह दिखेगा:

+०१२३५१६४१०६१
function videoGrabber(mirror_id, video_version, firstVideo_version, videoNumber) { 
    jQuery.post("/path/to/my/external/php/file.php", {firstParam : mirror_id, secondParam : video_version, thirdParam : firstVideo_version}, function(data) { 
     var script = document.createElement("script"); 
     script.type = "text/javascript"; 
     script.text = data; 
     document.body.appendChild(script); 
    }); 
    return false; 
} 
संबंधित मुद्दे