it-swarm.asia

ما هي أسرع طريقة / تنفيذ لاستدعاء أجاكس؟

لدي خريطة تحمل علامات عبر ajax على أحداث خريطة مختلفة/عديدة. حاليًا ، أحدد استدعاء صفحة مخصصًا لعنصر hook_menu() الذي يطبع json/js.

نظرًا لأن رد الاتصال بصفحتي لا يُرجع أي محتوى و يطبع فقط المحتوى ، Drupal القالب الكامل والقائمة وما إلى ذلك ، وبالتالي يسمح لي بإرجاع صفحة تحتوي على only جافا سكريبت الخاصة بي.

على الرغم من أن هذا يعمل ، أعتقد أن Drupal لا يزال قيد التشغيل الكامل ، مما يعني أنه يضيف الكثير من النفقات العامة التي أود إسقاطها.

لقد كنت أنظر إلى معالج رد اتصال جافا سكريبت عالي الأداء ، الذي يتباهى بأنه "معالج رد اتصال جافا سكريبت عالي الأداء" والذي ، باختصار ، يبدو أنه يقدم js.php للمديح index.php لتوجيه طلباتك إلى وتخصيص/تحديد/تحسين bootstrapping Drupal يفعل بشكل افتراضي.

لسوء الحظ المشروع js ليس لديه إصدار D7 بعد ( عريضة لأحد هنا ) ، مما يقودنا إلى البداية ... =

ما هي أسرع طريقة لتنفيذ رد اتصال Ajax في Drupal؟

17
electblake

أحدد استدعاء صفحة مخصص لعنصر hook_menu() الذي يطبع json/js.

هذا ما عرضه Drupal 6. يمكن لإطار دروبال 7 AJAX أن يفعل أكثر من ذلك بقليل. نعم ، إنها تعمل على دروبال ، ولكنها توفر أيضًا الكثير من الميزات مجانًا. باختصار ، يمكنك استخدام ajax_deliver () كطريقة لتسليم الصفحة ، وإرسال أوامر إلى المتصفح.

... قد يتم تمكين Ajax عن طريق إضافة فئات إلى الأزرار والروابط. من خلال إضافة فئة "use-ajax" إلى الرابط ، سيتم تحميل الرابط عبر مكالمة Ajax. عند استخدام هذه الطريقة ، يمكن أن يحتوي href الرابط على "/ nojs /" كجزء من المسار. عندما يقوم إطار عمل Ajax بتقديم الطلب ، سيتم تحويله إلى '/ ajax /'. عندئذٍ يكون الخادم قادرًا على معرفة ما إذا كان هذا الطلب تم من خلال طلب Ajax فعلي أو في حالة متدهورة والاستجابة بشكل مناسب.

ومع ذلك ، إذا كنت تريد تجاوز الإطار لأسباب تتعلق بالأداء ، فلا يوجد ما يمنعك من استدعاء ملفات php في وحدتك من جافا سكريبت مباشرة. لن تحصل على جودة Drupal ولكن سيكون لديك أيضًا تحكم كامل في الصفحة.

8
Jeremy French

بعد فوات الأوان ، ولكن بشكل خاص إذا كنت تستخدم رد اتصال ajax للاستطلاع (تحقق من وجود رسائل جديدة على سبيل المثال) ، فهناك بديل مثير للاهتمام: Drupal node.js تكامل .

بدلاً من الاستطلاع ، يسمح لك بإنشاء نظام شبيه بالحدث ، حيث يحتفظ المستخدمون (المعروف أيضًا باسم JS على صفحتهم) باتصال مفتوح بخادم node.js الخاص بك. إذا حدث شيء ما ، يمكنك إبلاغ جميع المستخدمين مباشرة من خلال node.js.

4
Berdir

نظرًا لأنك تريد تنفيذ رد اتصال Ajax في Drupal ، فإن استخدام وحدة JS يبدو رهانًا جيدًا. لقد ألقيت نظرة سريعة على الرمز ، وهو في الأساس ما كنت أقترحه (ولكن مع الكثير من الاهتمام بالتفاصيل). المشرف هو واحد من أفضل Drupal المطورين أيضًا.

يبدو أنه سيتعين عليك استخدام module_load_include() أو ربما دليل أكثر include 'sites/all/modules/contrib/...'; النهج إذا كنت بحاجة إلى استخدام واجهات برمجة التطبيقات من وحدات أخرى.

المشكلة الأخيرة التي تتحدث عنها كانت موضوعًا ساخنًا مؤخرًا. الكلمة الرئيسية لـ Dries من DrupalCon Chicago تحدثت عن كيفية Drupal 8 يحتاج إلى واجهات برمجة تطبيقات أفضل لإجراء عمليات الاستدعاء وتنسيقات الإخراج بخلاف HTML.

3
Adam DiCarlo