صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 17

الموضوع: تبادل الخبرات[3](Include(Ajax))

  1. #1
    خبير JavaScript
    تاريخ التسجيل
    Jul 2002
    المشاركات
    2,920

    تبادل الخبرات[3](Include(Ajax))



    تبادل الخبرات[3](Include(Ajax))
    السلام عليكم
    اضع لكم في هذا الموضوع التبادلي تجربتي مع ajax -Asynchronous JavaScript and XML- وبعض معارفي الخاصة به

    قبل ان اعرف هذه التقنية و في بداية تطوير ال winoscript وجدت اني مضطر الى طريقة لجلب ملف البرمجة بالعربية من خارج الصفحة و دون عمل الرفريش، فكان ان وجدت حل ناجع وهي افتح فريم في الصفحة و أخفيه ومن خلال جافا سكريبت أعطيه الإمتدال للصفحة التي اود جلبها، وبعد انتهاء التحميل صفحة الفريم يقوم متغير بجلب محتوياتها باي صيغة innerHTML أو innerText فكان هذا هو الكود
    كود PHP:
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var 
    iframe '<iframe id="frimino" style="display:none"></iframe>';
    document.write(div);
    ////
    Include = function(url){
    var 
    fram document.getElementById("frimino");
    fram.src url;
    fram.onload = function(){
        var 
    aramid document.getElementById('frimino').contentWindow.document.body;
        if(
    document.all){aramid aramid.innerText}else{aramid aramid.innerHTML}
        
        }
    }
    Include(
    "http://www.serdal.com")
    //-->
    </SCRIPT> 
    وهنا أمثلة قديمة للوينوسكريبت تعتمد على هذا الكود الشبه المبتكر
    http://www.winoscript.com/ws/demo.html

    عندما وصلت لهته النتيجة كانت قد اخدت مني ليلة كاملة و النتيجة في الصباح أعطيتها للعريس الجديد ابو مشعل
    كنت سأطرح هذا الكود لولا ان قلت سأستشير المبرمج عادل(صاحب مدونات العرب) اولا، كما يستشيرني هوبدوره في بعض الأكواد و السكريبتات قبل طرحها للعموم،فقال لي لا تتعب نفسك يا ابراهيم هذه التقنية، موجودة قلت له كيف فأعطاني هذا الكود:
    كود PHP:
    function include (url)
    {
        if (
    url == null) return;
        try {
            var 
    con = new XMLHttpRequest ();
        } catch (
    e) {
            try {
                var 
    con = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (
    _e_) {
                var 
    con = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        
    con.open ("GET"urlfalse);
        
    con.send (null);
        eval (
    con.responseText);

    فوجدت الكود ونعم، وفي المساء قال لي الأخ رضا ابراهيم عندي مشكلة صغيرة، ماهي؟ قال أريد خلية وسط جدول ان تجلب لي قيمة من قاعدة البيانات في كل مرة دون ان اجعل الصفحة تحمل من جديد(الرفريش) فكان كود عادل(ajax) هو الحل
    --
    وgoogle له علاقة بهذه التقنية خصوصا في البريد-الثورة- Gmail ونفهم الآن لماذا كان بريد gmail يطلب منا تغيير متصفحنا او ترقيته في بعض الأحيان، خصوصا في ie الخاص ب win2000، ذالك لأنه يعتمد على هذه التقنية كشرط تعاملي أساسي


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

    سلبيات هذه التقنية:
    - تعمل فقط مع جافا سكريبت
    - قد تشكل تغرة جديدة على انترنت اكسبلورر، حيث ان هذه التقنية تجلب من اي ملف من الجهاز دون قيد او شرط، ولكم ان تفهمو ذالك من خلال بريد gmail حيث انه في متصفح انترنت اكسبلورر لا يحتاج الى وسم استعراض type=file الا لمعرفة امتداد الملف اما السحب فإنه يكون عن طريق ajax
    - لا تعترف بالمتصفحات القديمة او النادرة
    - لا يمكن الجلب من خارج السيرفر الا في بعض الحالات الخاصة
    ---------------------------------------
    نأتي الآن للكود

    توجد ثلاث مقابض(نهج) للإمساك بتقنية ajax في المتصفحات
    اتنثان للأنترنيت اكسبلورر في الويندوز ضمن أكتيف إكس
    var ajax = new ActiveXObject("Microsoft.XMLHTTP");
    var ajax = new ActiveXObject("Msxml2.XMLHTTP");
    والثالثة لباقي المتصفحات Mozilla, Konqueror, Safari و Opera
    var ajax = new XMLHttpRequest();

    واحسن طريقة للإمساك بالمقبض المناسب في كل متصفح هي عن طريق catch و try مثال في الكود السالف ذكره فوق او if else كـ:
    كود PHP:
    if (window.XMLHttpRequest){ 
        
    ajax = new XMLHttpRequest();   
        } else if (
    window.ActiveXObject){ 
        
    ajax = new ActiveXObject('Microsoft.XMLHTTP'); 
     
    Msxml2.XMLHTTP
        
    } else 
        return 
    false 
    بعد ان أخد المتغير ajax قيمة مقبض XMLHTTP
    يصبح سهل علينا ان ندرك تركيب كل المناهج الثالية:

    نهج العنصر XMLHttpRequest

    المنهج open()
    الوصف: لفتح التماس جديد واختيار النهج get او post او head ثم الروابط
    ------------------------
    المنهج abort()
    الوصف: التخلى عن الالتماس
    ------------------------
    المنهج send()
    الوصف: ارسال الالتماس اما بقيمة اوبدون(null) وذالك يعتمد على اي نهج في الإرسال اخترنا get او post
    ------------------------
    المنهج setRequestHeader()
    الوصف: ارسال او تثبيت قيمة لرأس(الهيدر) الصفحة او الملف المرسل ( صورة او ملف تنفيدي او ملفات الأنماط المتعاقبة)
    ------------------------
    المنهج getResponseHeader()
    الوصف: أخد قيمة الرأس(الهيدر) وهذه ستنفعنا ان نستكشف اي نوع من الملفات التي سنجلب
    ------------------------
    المنهج getAllResponseHeaders()
    الوصف: استقبال او اخد كل قيم هيدر الصفحة المطلوبة على هيئة سلسلة كتابية
    ------------------------

    ############
    ايضا هذه الخصائص:
    خصائص العنصر XMLHttpRequest

    العنصر readyState
    خصائصه:
    وهي خاصة بوضعية العنصر، وتعطيك خمس قيم رقمية من 0 الى 4
    0 = لا توجد قيمة، اي ليس هناك ارسال او استقبال
    1 = النهج open() فتح الإرسال بنجاح
    2 = النهج send() ارسل بنجاح
    3 = الصفحة او الملف المراد جلبه قيد التحميل - وهذه القيمة تنفع اذا اردت ان تواسي الشخص المتصفح بكلمة -قيد التحميل او لحظات مثل بريد gmail حين يضع loading بالأحمر-
    4 = انتهى التحميل
    ------------------------
    العنصر responseText
    خصائصه:
    رد كتابي او بمعنى اخد الرد كقيمة كتابية Text
    ------------------------
    العنصر responseXML
    خصائصه:
    اخد الرد كقيمة dom بمعنى انه يمكنك ان تأخد هذه القيمة كلغة توصيفية للتعامل معها بالدوال الخاصة بـ xml، اي نفترض انك جلبت ملف xml به ما يزيد عن 100 سطر وتريد فقط ان تجلب منه ثلاث اسطر او تعريفات فإن استقبلته ضمن الخاصية responseText فماهية وما لونها حتى تستخلص منها فقط تلك السطور التي تبغيها، اما اذا استعملت خاصية responseXML فالأمر سيكون سهل جدا و للغاية حيث أنك ستعتمد على خاصية item() لجلب ماتحتاجه فقط
    ------------------------
    العنصر status
    خصائصه:
    هذه الخاصية تستكشف اي تصريح(اذا صحت الكلمة) معطى للصفحة المراد جلبها ف مثلا 404 لصفحة الخطأ، و 200 فهي تعني الموافقة، اي ان الصفحة يمكن جلبها عن طريق تقنية ajax، لكن هذه المسألة تطرح فقط اذا كانت الصفحة المراد جلبها توجد في سيرفر آخر، وغالبا لا يمكن ان تجلب اي ملف من خارج السيرفر، حتى وان كان rss وهذه الخاصية تنفع في اظهار رسالة تنبيه في حالة لم يكن التصريح 200
    وهناك مفارقة بين انترنت اكسبلورر و باقي المتصفحات الأخرى، حيث انه اذا كان ملف ajax في localhost يمكن لمتصفح انترنت اكسبلورر ان يجلب اي صفحة او ملف من اي موقع او سيرفر آخر سواء كان التصريح 200 او 2005
    مثل البريمج TransAjax حيث يرسل ويجلب المعلومات من google دون قيد او شرط، لكن هذا كما قلت يحدث فقط في انترنت اكسبلورر واذا كان امتداد الصفحة في لوكال هوست
    ------------------------
    العنصر statusText
    خصائصه:
    الرسالة التي تكون مصحوبة مع الكود لمعرفة بعد الخصائص المتقدمة للملف
    ------------------------
    العنصر onreadystatechange
    خصائصه:
    تدبير الحالة في كل تغيير او في كل مرة وهي تنفع عندما نريد ان نستعمل تلك الدالة اكثر من مرة.
    ------------------------

    ~~~~~~~~~~
    و الآن اليكم دالتنا الخاصة include() بحيث ان هذه الدالة ستعود لنا بقيمة محتوى الرابط الذي سنجلبه
    كود PHP:
    <SCRIPT>
    //////////////////////////////>
    include = function(url,method_,send_){
    var 
    ajax;
    if (!
    url) return;
    try{
        
    ajax = new XMLHttpRequest ();
        }
        catch (
    e){
            try {
                
    ajax = new ActiveXObject("Msxml2.XMLHTTP");
                }
        catch (
    _e_) {
            
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
    ajax.open (method_urlfalse);
    ajax.send (send_);
    if (
    ajax.readyState==4)
        return 
    ajax.responseText;
    }
    ///////////////////////////////>
    </SCRIPT> 
    /////
    للعلم هذه التقنية لاتدخل ضمن المقاييس العالمية للمنظمة w3c على الأقل حاليا، لكن لها ارضية خصبة لهذه التقنية ضمن دوم المستوى الثالت dom level3
    اتمنى ان اكون قد اوصلت لكم شيئا و ستكون لي عودة للموضوع لوضع بعض الأمثلة و بعض الإنجازات
    كذالك انتظرها منكم
    والمعذرة على بعض الأخطاء الإملائية و النحوية الخائنة
    و السلام






    الملفات المرفقة الملفات المرفقة


  2. #2
    عضو فعال
    تاريخ التسجيل
    Feb 2004
    المشاركات
    1,091


    موضوع قيم جدا أخي ابراهيم
    جزاك الله خيرا


    أين كنت منذ أسبوع وأنا أبحث عنك في القسم العام
    أتمنى أن أراك على الميسنجر للضرورة القصوى وشكرا على الموضوع المميز





    __________________
    CSS - XHTML

  3. #3
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2004
    المشاركات
    2,307


    ما شاء الله ، موضوع ميلئ بالافكار الجميلة ..
    جزاك الله خير على المواضيع ذات الفائدة ..

    الله يجزاك الف خير على هذا الموضوع الرائع ..


    ممكن ايميلك لو سمحت .


    تحياتي لك





    __________________
    بي اتش بي العرب : php-ar.com
    دروس PHP خاص : phpfaq.php-ar.com

    new site : www.naifphp.net/web

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,123


    الله يجزاك خير اخوي .. موضوع مميز جدا .





    __________________
    htaccess بكل بساطة

    الشفرة الموحدة "يونِكود"

    (إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Jan 2005
    المشاركات
    285


    جزاك الله خير ...
    و أثقل به موازين حسناتك





    __________________
    "من علمني حرفا صرت له عبدا"
    |+|PHP|+|loowy|+|PHP|+|
    "عامل الناس بما تحب أن يعاملوك به"
    لـــــــــــــــــــــــــــــؤي

  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2003
    المشاركات
    2,047


    شكرا لك اخي إبراهيم على هذه المعلومات الهائلة

    و انا هالأيام بعد قرائتي عدة مقالات و دروس و مشاهدتي عدة اكواد رائعة في عدة مواقع حاولت تطبيق الأمر في محرك بحث بسيط يبحث في قاعدة البيانات و تكون النتيجة مباشرة يعني دون عمل Submit للform يعني بعد كتابة كلمتك المفتاحية و في لحضة اخراجك للماوس من الInput تضهر النتيجة
    بصراحة اعجبتني الفكرة و سأحول تطبيقها في عدة مشاريع

    و قد هذا الكود للإفادة

    كود PHP:
    var req;

    function 
    loadajax(methode,url,cmdz) {

           
    req false;
           if(
    window.XMLHttpRequest) {
            try {
        
    req = new XMLHttpRequest();
            } catch(
    e) {
                
    req false;
            }
          } else if(
    window.ActiveXObject) {
               try {
                
    req = new ActiveXObject("Msxml2.XMLHTTP");
              } catch(
    e) {
                try {
                      
    req = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(
    e) {
                      
    req false;
                }
            }
        }
        if(
    req) {
            
    req.onreadystatechange processReqChange;
            
    req.open(methode,url ,true);
            
    req.send(cmdz);
        }
    }
    function 
    processReqChange()
    {
    if(
    req.readyState == 1){
            
    document.getElementById('resultshow').innerHTML 'Loading data...';
        }
     if (
    req.readyState == 4)
     { 
       if (
    req.status == 200)
        {
           var 
    result_ req.responseText;
          
    document.getElementById('resultshow').innerHTML result_;
          }
          else
          {
       
    alert("خطأ: " req.statusText);

       }


    return 
    true

    طريقة استعمال : مثال

    كود:
    <input type="text" id="thetext" name="srchtxt" size="27" onchange="loadajax('GET','search.php?srchtxt='+document.srch.srchtxt.value,'null')" >






    __________________
    -{Only God Can Judge Me}-
    القانون فوق الجميع و الجميع يموت بالجوع

  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2001
    المشاركات
    749


    ملك صراحة

    الله يعطيك العافيه





    __________________
    www.fmlog.com

  8. #8
    خبير JavaScript
    تاريخ التسجيل
    Jul 2002
    المشاركات
    2,920


    بارك الله فيكم إخواني و أتمنى أن أكون قد أفدتكم ولو بشيء قليل

    أخي جريح هنا http://www.swalif.net/softs/member.php?u=5527

    شكرا أخي هاشم على مشاركتك الطيبة ودائم تبدع :nice: أنا وياك كيف كيف (...)

    شكرا لكم مرة أخرى ولكل من مر من هنا






  9. #9
    فضلاً اكتب اسمك الحقيقي هنا
    زائرsaidsaker


    جزاك الله خير






  10. #10
    عضو فعال
    تاريخ التسجيل
    Feb 2002
    المشاركات
    1,454


    الله يعطيك العافية اخوي Zizwar على هذه الاضافة المتميزة لتقنية Ajax

    تمنياتي لك بالتوفيق والسداد





    __________________
    شبكة مملكة العرب
    ---------------------
    استضافة مواقع تبدأ من 100 ريال سنويا
    خطط خاصة للموزعين
    سكربت دليل المواقع
    www.aknet.com

  11. #11
    عضو فعال
    تاريخ التسجيل
    Jun 2003
    المشاركات
    1,143


    رااااااااااااااااااااااااااائع يا ابراهيم ....


    اتت و في و قتها يا أخي الكريم .





    __________________
    سبحان الله و بحمده سبحان الله العظيم .
    random-x@hotmail.com
    -------------
    بين الفينة و الأخرى ... لماماً أظهر !

  12. #12
    خبير JavaScript
    تاريخ التسجيل
    Jul 2002
    المشاركات
    2,920


    الاخوة مدمن أنترنت وjadweb.com و 3bdullah و المحارب و random_X بارك الله فيكم جميعا

    الأخ code4arab بارك الله فيكم وانت السباق

    جزاكم الله خيرا






  13. #13
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2004
    المشاركات
    361


    ما شاء الله

    تبارك الله

    الاخ Zizwar بارك الله فيك طريقة عرض منظمة واسلوب سلس وسهل ومعلومات غزيرة زادك الله من نعمه وفضله

    والاخ Dr-dre67 بارك الله فيك على التطبيق

    وبارك الله فى الاخوة أجمعين

    وفقنا الله واياكم





    __________________
    أستغفر الله :: أستغفر الله :: أستغفر الله ::
    لا إله إلا أنت سبحانك أستغفرك وأتوب إليك إنى كنت من الظالمين

    phparabia @ msn.com

  14. #14
    عضو نشيط جدا
    تاريخ التسجيل
    May 2004
    المشاركات
    355


    اقتباس المشاركة الأصلية كتبت بواسطة Zizwar
    تبادل الخبرات[3](Include(Ajax))
    السلام عليكم
    وعليكم السلام ورحمة الله وبركاته


    جزاك الله خير أستاذي إبراهيم .. أشكرك على هذا الشرح التفصيلي المتميز ( خصوصا فيما يتعلق بــ readyState وتوضيحك لها )

    من أشمل المواضيع التى قرأتها عن الأجاكس أكرر شكري وإمتناني لشخصك الكريم بس ياليت أشوفك في الماسينجر


    اقتباس المشاركة الأصلية كتبت بواسطة Dr-dre67
    جزاك الله خير أستاذي Dr-dre67

    إستفدت كثيرا من الكود الذي وضعته





    __________________
    وما أكثر الأصحاب حين تعدهم

    ولكنهم عند النائبات قليل

  15. #15
    مُجَاهِد سابقاً
    تاريخ التسجيل
    Apr 2004
    المشاركات
    12,000


    رائع جداً..
    والى الامام ...





    وخالص المودة ،،





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض