سؤال

لدي هذه الصفحة عينة:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ajax Page</title>
<script type="text/javascript">
function ajax_hello() {
    alert ("hello");    
}
alert ("Hello from JS");
</script>
</head>

<body>
This is the Ajax page.
<a href='#' onclick='ajax_hello();'>Click here to fire off JS function</a>.
</body>
</html>

أنا أتصل مع هذا:

new Ajax.Updater($(element), page, { method: "get", evalScripts: true });

التنبيه قيد التشغيل ، لكن وظيفة ليست تسجيل (ajax_hello()).

هل هناك طريقة للحصول على اياكس تسجيل وظيفة جافا سكريبت إلى الدعوة الصفحة ؟

هل كانت مفيدة؟

المحلول

ردا على التعليق أنا مطعون في الوثائق ويبدو أن هناك بعض القواعد الخاصة على النموذج عندما النصوص وتقييمها من قبل التحديث.البرامج النصية يمكن أن يكون في أي مكان في الاستجابة ، ولكن تحتاج إلى تعيين أي تعريفات الدالة عالمي متغير لجعلها متاحة على الصفحة الخاصة بك.

عن evalScripts وتحديد وظائف إذا كنت تستخدم evalScripts:صحيح, أي كتلة سوف يكون تقييمها.هذا لا يعني أنها سوف الحصول على المدرجة في الصفحة:أنهم لن.المحتوى ببساطة سوف يتم تمريرها إلى الأم eval() وظيفة.هناك اثنين من عواقب هذا:

النطاق المحلي سيكون ذلك من النموذج المعالجة الداخلية وظيفة.أي شيء في السيناريو الخاص بك أعلن مع فار سوف يكون التخلص منها لحظات بعد التقييم ، أي معدل تكون غير مرئية ما تبقى من الصفحات النصية.إذا كنت تحديد وظائف هناك ، تحتاج إلى في الواقع خلق لهم ، وإلا فإنها لن يكون الوصول إلى ما تبقى من صفحة البرامج النصية.هذا هو ، البرمجية التالية لا تعمل:

// This kind of script won't work if processed by Ajax.Updater:
function coolFunc() {
    // Amazing stuff!
}

لك سوف تحتاج إلى استخدام بناء الجملة التالي:

// This kind of script WILL work if processed by Ajax.Updater:
coolFunc = function() {
   // Amazing stuff!
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top