يوم سوالف، في 7 أغسطس القادم

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > تطوير الويب
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
خبير JavaScript
تاريخ التسجيل: Jul 2002-
Blog Entries: 15
#1 (permalink)  
تبادل الخبرات[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
اتمنى ان اكون قد اوصلت لكم شيئا و ستكون لي عودة للموضوع لوضع بعض الأمثلة و بعض الإنجازات
كذالك انتظرها منكم
والمعذرة على بعض الأخطاء الإملائية و النحوية الخائنة
و السلام






الملفات المرفقة
نوع الملف: txt include.html.txt‏ (795 بايت, المشاهدات 206)
Zizwar غير متواجد حالياً   قديم 20-08-2005, 04:14 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Feb 2004-
#2 (permalink)  

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


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






__________________
CSS - XHTML
مدمن أنترنت غير متواجد حالياً   قديم 20-08-2005, 01:21 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Feb 2004-
#3 (permalink)  

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

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


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


تحياتي لك






__________________
بي اتش بي العرب : php-ar.com
دروس PHP خاص : phpfaq.php-ar.com
البلوق العربي : ar-blog.net
مدونتي : naifphp.net
خدمات البرمجة : naifphp.org

جريح سابقا :)
Mr.php-ar غير متواجد حالياً   قديم 20-08-2005, 03:11 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#4 (permalink)  

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






__________________
إميل سعودي مجاني

htaccess بكل بساطة

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

(إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي
jadweb.com غير متواجد حالياً   قديم 20-08-2005, 03:17 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2005-
#5 (permalink)  

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






__________________
"من علمني حرفا صرت له عبدا"
|+|PHP|+|loowy|+|PHP|+|
"عامل الناس بما تحب أن يعاملوك به"
لـــــــــــــــــــــــــــــؤي
3bdullah غير متواجد حالياً   قديم 20-08-2005, 04:55 PM
رد مع اقتباس
مشرف قسم تطوير المواقع
تاريخ التسجيل: Feb 2003-
#6 (permalink)  

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

و انا هالأيام بعد قرائتي عدة مقالات و دروس و مشاهدتي عدة اكواد رائعة في عدة مواقع حاولت تطبيق الأمر في محرك بحث بسيط يبحث في قاعدة البيانات و تكون النتيجة مباشرة يعني دون عمل 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}-
القانون فوق الجميع و الجميع يموت بالجوع
Dr-dre67 غير متواجد حالياً   قديم 20-08-2005, 09:04 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Feb 2001-
#7 (permalink)  

ملك صراحة

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






__________________
www.fmlog.com
المحارب غير متواجد حالياً   قديم 20-08-2005, 09:58 PM
رد مع اقتباس
خبير JavaScript
تاريخ التسجيل: Jul 2002-
Blog Entries: 15
#8 (permalink)  

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

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

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

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






Zizwar غير متواجد حالياً   قديم 21-08-2005, 01:47 AM
رد مع اقتباس
-
#9 (permalink)  

جزاك الله خير






  قديم 21-08-2005, 01:58 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Feb 2002-
#10 (permalink)  

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

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






__________________
شبكة مملكة العرب
---------------------
استضافة مواقع تبدأ من 100 ريال سنويا
خطط خاصة للموزعين
سكربت دليل المواقع
www.aknet.com
code4arab غير متواجد حالياً   قديم 21-08-2005, 03:02 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Jun 2003-
#11 (permalink)  

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


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






__________________
سبحان الله و بحمده سبحان الله العظيم .
random-x@hotmail.com
-------------
دع عنك الإستعجال
random_X غير متواجد حالياً   قديم 21-08-2005, 01:13 PM
رد مع اقتباس
خبير JavaScript
تاريخ التسجيل: Jul 2002-
Blog Entries: 15
#12 (permalink)  

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

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

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






Zizwar غير متواجد حالياً   قديم 21-08-2005, 04:06 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Aug 2004-
#13 (permalink)  

ما شاء الله

تبارك الله

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

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

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

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






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

phparabia @ msn.com
PHP-ARABIA.com غير متواجد حالياً   قديم 06-09-2005, 08:22 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2004-
#14 (permalink)  

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


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

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


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

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






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

ولكنهم عند النائبات قليل
شــــــامل غير متواجد حالياً   قديم 25-09-2005, 10:47 PM
رد مع اقتباس
صاحب موقع مهارات سوفت
تاريخ التسجيل: Apr 2004-
#15 (permalink)  

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





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






__________________
██████████
██████████
██████████


مهارات سوفت
مهارات سوفت للبرامج وتطوير المواقع والمنتديات والتبادل التجاري.


للتواصل ..
00967733873335

باب الحارة .. للبيع ..!!
مُجَاهِد غير متواجد حالياً   قديم 26-09-2005, 06:07 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Nov 2003-
#16 (permalink)  

جميلة هذه التقنية الرائعة

اشكرك اخي الكريم

متنيا كرما زائدا منك كي نسفيد اكثر






__________________
http://www.babylonserver.com
So8ra6 غير متواجد حالياً   قديم 06-10-2005, 07:54 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#17 (permalink)  

تحياتى لك يا wino






__________________
شبكة البيت للتصميمات وبرمجة الاسكربتات الخاصة
http://www.Elbayt.NeT
الزواج - العقارات -الاخبار- مجلات خاصة - نيوك - منتديات - قروبات - مستعمل - الجوال - الوظائف - واى من الاسكربتات الخاصة
elbayt.net غير متواجد حالياً   قديم 12-09-2006, 01:20 PM
رد مع اقتباس
رد


أدوات الموضوع

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

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 11:13 AM بتوقيت المملكة العربية السعودية