जावास्क्रिप्ट के लिए मजबूर करने के लिए कैसे अजाक्स अनुरोध करने के लिए HTML प्रतिक्रिया के भीतर निष्पादित करने के लिए

वोट
11

हम अपने Ajax अनुरोध को संभालने के सभी के लिए प्रोटोटाइप का उपयोग कर रहे हैं और चीजों को सरल रखने के लिए हम सरल HTML सामग्री जो उसके बाद उपयुक्त div निम्नलिखित फ़ंक्शन का उपयोग करने के लिए असाइन किया गया है प्रस्तुत करना:

function ajaxModify(controller, parameters, div_id)
{
    var div = $(div_id);

    var request = new Ajax.Request 
    (
        controller, 
        {
            method: post,
            parameters: parameters,
            onSuccess: function(data) {
                div.innerHTML = data.responseText;
            },
            onFailure: function() {
                div.innerHTML = Information Temporarily Unavailable;  
            }
        }
    );
}

हालांकि, मैं कभी कभी HTML उत्तर भीतर जावास्क्रिप्ट को निष्पादित करने की जरूरत है और इस विधि कि करने में असमर्थ दिखाई देता है।

मैं कार्यों की सूची रखने के लिए अजाक्स कारणों की एक संख्या के लिए एक न्यूनतम करने के लिए कॉल के लिए इसलिए यदि कोई हर जगह तोड़ने कि यह वर्तमान में किया जा रहा है बिना मौजूदा समारोह को संशोधित करने के लिए एक तरह से या HTML प्रतिक्रिया है कि संशोधित करने के लिए एक रास्ता है कोशिश कर रहा हूँ निष्पादित करने के लिए है कि महान किसी भी एम्बेडेड जावास्क्रिप्ट का कारण होगा।

नोट के वैसे, मैं पहले से ही evalJS: 'बल' जोड़ने की कोशिश की है कार्य करने के लिए यह क्या करेंगे देखने के लिए और यह चीजों को किसी भी मदद नहीं की।

10/11/2008 को 14:20
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


5 जवाब

वोट
17

पैरामीटर है:

evalScripts:true

ध्यान दें कि आप का उपयोग करना चाहिए Ajax.Updater , नहीं Ajax.Request

देखें: http://www.prototypejs.org/api/ajax/updater

Ajax.Request केवल जावास्क्रिप्ट की प्रक्रिया प्रतिक्रिया हेडर हैं जाएगा:

आवेदन / ECMAScript, आवेदन / जावास्क्रिप्ट, आवेदन / x-ECMAScript, आवेदन / x-जावास्क्रिप्ट, पाठ / ECMAScript, पाठ / जावास्क्रिप्ट, पाठ / x-ECMAScript, या पाठ / x-जावास्क्रिप्ट

जबकि Ajax.Updater पर कार्रवाई करेंगे जे एस evalScripts है: सच निर्धारित है। Ajax.Request इस तरह के एक JSON प्रतिक्रिया हो रही है के रूप में डेटा परिवहन की ओर तैयार है।

आप HTML अद्यतन कर रहे हैं जब से तुम वैसे भी Ajax.Updater का उपयोग कर किया जाना चाहिए।

10/11/2008 को 14:27
का स्रोत उपयोगकर्ता

वोट
0

आप इस तरह कुछ करने के लिए सक्षम होना चाहिए:

div.innerHTML = "<div onclick='someOtherFunctionTocall();'>";

जो आपको की - आप HTML इंजेक्शन के रूप में एक ही समय में कुछ पर अमल करने की जरूरत है, तो आप अन्य पैरामीटर, जो जावास्क्रिप्ट समारोह आप निष्पादित करने के लिए (अगर यह रिक्त नहीं है जा रहे हैं हो जाएगा पारित करके ajaxModify () के हस्ताक्षर संशोधित कर सकते हैं यह वैकल्पिक रखने के लिए, के रूप में आप निश्चित रूप से हर AJAX प्रतिक्रिया पर कुछ अमल करने के लिए नहीं करना चाहता होगा)।

10/11/2008 को 14:27
का स्रोत उपयोगकर्ता

वोट
1

की स्थापना करता है evalScripts: trueएक विकल्प के रूप में मदद की?

10/11/2008 को 14:30
का स्रोत उपयोगकर्ता

वोट
0

बस ajax प्रतिक्रिया के बाद एक कस्टम my_function () पर अमल

div.innerHTML=...ajax response text...
my_function()

तो कस्टम my_function अंदर किसी भी समारोह को अंजाम ()

function my_function() {
  function_1()
  ...
}

ध्यान दें कि my_function () कहीं div.innerHTML बाहर किया जाना चाहिए।

18/01/2010 को 09:46
का स्रोत उपयोगकर्ता

वोट
-1

आप अजाक्स में जावास्क्रिप्ट को चलाने के लिए eval () फ़ंक्शन का उपयोग करने के सोना इस स्क्रिप्ट को अलग करने और इसे चलाने के लिए पूर्ण का उपयोग किया जा सकता है की जरूरत है

 

समारोह PaseAjaxResponse (somemixedcode)
{
    वर स्रोत = somemixedcode;
    वर लिपियों = नई सरणी ();
    जबकि (source.indexOf ( "<स्क्रिप्ट")> -1 || source.indexOf ( "</ स्क्रिप्ट")> -1) {
    वर एस = source.indexOf ( "<स्क्रिप्ट");
    वर s_e = source.indexOf ( ">", रों);
    वर ई = source.indexOf ( "</ स्क्रिप्ट", रों);
    वर e_e = source.indexOf ( ">", ई);
    scripts.push (source.substring (s_e + 1, ई));
    स्रोत = source.substring (0, रों) + source.substring (e_e +1);
}
(वर x = 0; x <scripts.length; एक्स ++) के लिए {
प्रयत्न {
    eval (स्क्रिप्ट [x]);
}
पकड़ (पूर्व) {
}
}
वापसी स्रोत;
}

अनुप्रास के ढंग पर अधिक जानकारी के लिए यह देखने http://www.yasha.co/Ajax/execute-javascript-on-Ajax-return/article-2.html

23/12/2010 को 00:12
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more