سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > البرمجية القياسية Ajax +XML+ CSS+ JavaScript وغيرها
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
مشرف قسمي تطوير الويب و تقنية محركات البحث
#1  
سؤال بخصوص GM_xmlhttpRequest اريدها غير متزامنة

السلام عليكم


لمن يستطيع ان يجد حلا

الحين هناك عدد من الصفحات اريد ان افتحها و اسحب منها محتويات

قمت بإستخدام GM_xmlhttpRequest لأن البيئة التي اعمل عليها و حسب الطلب يجب علي استخدامها

المشكلة الحين انها بداخل for loop و كما تعلمون الي الجافا سكريب متزامنه يعني قبل ان تنتهي من جلب اول صفحه تبدأ في جلب الأخرى و يصبح هناك تداخل في البيانات الي تم جلبها

اريد ان امنع ال loop من ان تقوم بدورة جديدة قبل ان ينتهي GM_xmlhttpRequest من جلب الصفحة و فلترتها

جزء من الكود

كود:
        for (var i=0; i<13; i++)
        {
            var cityE = document.getElementById("cityLocation"+i);

            var temp  = getElementsByClass("cityinfo", cityE, null)[0].firstChild.nextSibling;
            var idx = temp.nextSibling.nextSibling.innerHTML.indexOf("</span>");
            var name = trim(temp.nextSibling.nextSibling.nextSibling.nextSibling.innerHTML.substring(idx+9).split("<")[0]);
            var level = temp.nextSibling.nextSibling.innerHTML.substring(idx+7);
            // alert(i);
            
            request("this should be the url", "the post data", function (response){getData(response,  name, type, playerID)}, 'POST');
            
            
            //////////////////////////////////////////////////
            //     هنا يتم معاجلة البيانات و تخزينها           //
            //////////////////////////////////////////////////
        }
        
        
        
        و هنا function request 
        
        function request(url, data, onload, method) {

            GM_xmlhttpRequest({
                method:method,
                url:'http://' + document.domain + '/index.php?'+url,
                data:data,
                headers: {
                    'User-agent': 'Mozilla/4.0 (compatible) ********',
                    'Content-type': 'application/x-www-form-urlencoded',
                    'Accept': 'application/atom+xml,application/xml,text/xml',
                    'Referer': 'http://' + document.domain  + '/index.php', 
                    'Cookie': document.cookie
                },
                onload:onload
            });
        }


و شكرا






__________________
سبحان الله و بحمده .... سبحان الله العظيم

للمراسلة
b happy is offline   قديم 01-01-2009, 11:21 PM
الرد مع إقتباس
عضو نشيط
#2  

السلام عليكم
أنظر هذا الرابط، به توضح للكائن الذي تريد التعامل معه!
GM_xmlhttpRequest [Dive Into Greasemonkey]

أنصحك برؤية الحدث onload وكذلك الخاصية readyStatus

هذا ما لدي وشكراً






__________________
مدونة شخصية: عمر الدليمي
راسلني
أنصح بإستخدام "أوبونتو"
عمر الدليمي is offline   قديم 01-01-2009, 11:35 PM
الرد مع إقتباس
مشرف قسمي تطوير الويب و تقنية محركات البحث
#3  

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

اعرف تماما ما هو onload وكذلك الخاصية readyStatus

onload ماله علاقة و readyStatus جربت كم حركة فيه و لكن المشكلة ان الجافا متزامنه






__________________
سبحان الله و بحمده .... سبحان الله العظيم

للمراسلة
b happy is offline   قديم 01-01-2009, 11:52 PM
الرد مع إقتباس
مشرف قسم ويب 2.0 و البرمجة القياسية
#4  

قم بعمل function تستدعى نفسها عدد معين من المرات - recursive - فقط بعد التأكد من اكتمال عمل GM_xmlhttpRequest
كود PHP:
function checkAndFetch(i){
--
i;
GM_xmlhttpRequest({
                
method:method,
                
url:url,
                
data:data,
                
onload:function(){
                      
// do someThing;
                      
if(i>1checkAndFetch(i);
                }
            });

}
checkAndFetch(13); 






__________________
Keepondev | مدونه شديد التخصص فى الجافاسكربت
جافاسكربت الموجهه بالكائنات | أنماط تصميم جافاسكربت
مصطفى فرغلى is offline   قديم 02-01-2009, 01:34 AM
الرد مع إقتباس
عضو نشيط
#5  

السلام عليكم،
أنت تريد أن تطلب أمر أجاكس جديد بعد إنتهاء الأول، و ليس عندما تبدأ loop جديد.

لذا أظن من الأفضل إضافة شرط آخر في ال if ، ينفذ العملية بعد إنتهاء طلب الأجاكس
يعني الشرط التالي.:
if (http.readyState == 4)







آخر تعديل بواسطة amiraldo1 في 02-01-2009 الساعة 02:54 AM.
amiraldo1 is offline   قديم 02-01-2009, 02:53 AM
الرد مع إقتباس
مشرف قسمي تطوير الويب و تقنية محركات البحث
#6  

Dezology فعلا هذا ما قمت بعمله حتى قبل ان ارى ردك تسلم مشكور جدا على ردك على الأقل اقتنعت انها الطريقة الافضل لأني كنت اظن ان هناك حل يعرفه المتعمقين في الجافاسكريبت

amiraldo1 حتى هذه لم تنجح جربتها و شكرا لك على الرد

تم حل المشكلة على نفس الطريقة الي ذكرها الأخ Dezology






__________________
سبحان الله و بحمده .... سبحان الله العظيم

للمراسلة
b happy is offline   قديم 03-01-2009, 01:36 PM
الرد مع إقتباس
الرد على الموضوع



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

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

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
سؤال بخصوص سويش ماكس (الكتابة غير متناسقة من الصوت) مال الحل؟ جنيرال التصميم والرسومات والمونتاج 2 07-11-2005 07:14 PM
عناوين المواضيع في المنتصف اريدها على اليمين ؟؟ rayg2002 الإصلاح والصيانة 15 08-09-2005 10:52 PM
اريدها .... ياريت تعطوني نعمان الويب والويب 2.0 والـ Semantic Web 1 10-12-2004 02:16 PM
coolphp المجلة الصغيرة اريدها لو سمحتوا الكمبيونت الويب والويب 2.0 والـ Semantic Web 3 17-07-2003 04:11 PM
السيريل نمبر للـJRUN الاصدارات الاخيرة اريدها ضروري u1901 الويب والويب 2.0 والـ Semantic Web 1 30-12-2001 08:10 PM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 03:09 PM.