2011-12-09 15 views
9

ठीक है जब मैं एक पृष्ठ लोड निम्न HTML कोड पार्स किया गया है के बाद लोड नहीं करता है कोड इस तरह दिखता है:जावास्क्रिप्ट AJAX कॉल

<div id="clip-wrapper"> 
<script type="text/javascript"> 
    alert("ajaxbla"); 
</script> 
</div> 
दूसरी ओर

यह एक चेतावनी भी नहीं होती। क्यूं कर? और मैं इसे कैसे ठीक करूं?

+0

जांच संपादित जवाब –

उत्तर

8

यदि अजाक्स कॉल से आपके डोम में लोड की गई कोई भी स्क्रिप्ट है, तो वे सुरक्षा कारणों से निष्पादित नहीं होंगे।

निष्पादित करने के लिए, आप इसे प्रतिक्रिया से बाहर पट्टी करने की आवश्यकता होगी स्क्रिप्ट प्राप्त करने के लिए, और आदर्श रूप में हालांकि eval

के माध्यम से चलाने के लिए, आप जब लिए एक कॉलबैक के रूप में अपने स्क्रिप्ट चलाने के लिए चाहता हूँ आपका AJAX अनुरोध पूरा हो जाता है। यदि आप jQuery का उपयोग कर रहे हैं, तो यह सफलता आपके AJAX कॉल की घटना होगी, और यदि आप इसे मूल रूप से कर रहे हैं, तो यह आपके xhr ऑब्जेक्ट की तैयारस्टेट चेंज घटना होगी।

संपादित

तुम सच में eval विकल्प का चयन करना चाहते हैं, तो आप कुछ इस तरह की कोशिश कर सकते: लोड करते समय

document.getElementById(contentDiv).innerHTML = xmlHttp.responseText; 
eval(document.getElementById("clip-wrapper").innerHTML); 
+0

क्या आप इस बात से गठबंधन कर सकते हैं कि मैं इसे प्रतिक्रिया से कैसे प्राप्त कर सकता हूं? और बाद में eval के माध्यम से इसे चलाने के लिए? मैं निम्नलिखित कोड का उपयोग कर रहा हूं: 'फंक्शन स्टेट चेंज() { अगर (xmlHttp.readyState == 4) document.getElementById (contentDiv) .innerHTML = xmlHttp.responseText; } ' जहां सामग्री डीआईवी इस मामले में क्लिप-रैपर है। (क्या यह eval (xmlHttp.responseText) के रूप में सरल है;?) – pbond

+0

ठीक है मुझे लगता है कि मेरे पास यह सही है, लेकिन यह अभी भी काम नहीं करता है: 'if (xmlHttp.readyState == 4) { document.getElementById (contentDiv) .innerHTML = xmlHttp.responseText; eval (document.getElementById (contentDiv) .innerHTML); } ' क्या मुझे कुछ याद आ रही है? मदद के लिए धन्यवाद, वास्तव में इसकी सराहना करते हैं! – pbond

+1

मुझे नहीं लगता कि eval वहां स्क्रिप्ट टैग पसंद करता है - क्या आप उनके बिना प्रतिक्रिया वापस भेज सकते हैं? –

1

$(document).ready(function() 
{ 
    alert(msg); 
}); 

में आप कोड डाल या XMLHttp वस्तु की readysatchange घटना का इस्तेमाल करते हैं।

XMLHttpobject.readyStateChange(furnction() { alert('msg'); }); 

संपादित

अगर आप jQuery से के लिए

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    $(this).addClass("done"); 
    } 
}); 

सफलता घटना आप अपने कोड जो एक बार आप ajax के साथ किया जाता है निष्पादित हो लिख सकते में यहाँ जाना उपयोग कर रहे हैं।

+0

मैं अपने सुझाव की कोशिश की है, यह निम्न HTML कोड को पार्स करता है:

लेकिन यह एक चेतावनी नहीं देता है। पीएस। टिप्पणियों में कोड कैसे प्राप्त करें? – pbond

+0

हे, आपको उस के लिए jQuery शामिल करने की आवश्यकता है ................. –

+0

इसमें शामिल है, क्योंकि मैं वर्डप्रेस का उपयोग कर रहा हूं। – pbond

1

script टैग के बीच में शरीर के अंदर किसी भी कोड केवल मार डाला जाएगा दस्तावेज़।

ajax कॉल में, यदि आप jQuery का उपयोग कर रहे ajax प्रतिक्रिया को संभालने के लिए callback या success: या oncomplete: का इस्तेमाल करते हैं।

0

आपका मतलब है कि दूसरा HTML कोड AJAX प्रतिक्रिया के रूप में आ रहा है ?? क्या आपने वर्तमान पृष्ठ पर एचटीएमएल भी डाला था?

कुछ की तरह,

document.body.innerHTML = ajax_response; 

लेकिन फिर भी innerHTML प्रतिस्थापन के साथ मैं बात नहीं करना script इसके अंदर ऑटो निष्पादित किया जाएगा। ब्राउज़र script को पार्स करेगा लेकिन इसे स्वचालित रूप से निष्पादित नहीं करेगा।

एक अन्य विकल्प document.write उपयोग करने के लिए है (उदाहरण के लिए, यदि आप html में एक function परिभाषा है, के बाद ajax फोन आप उन कार्यों को फोन करने में सक्षम हो जाएगा), यह नया एचटीएमएल के साथ पूरे पृष्ठ की सामग्री का स्थान ले लेगा और इसमें script टैग ऑटो निष्पादित किए जाएंगे।

document.write(ajax_response); 

आशा इस मदद करता है,

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