تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 3 123 آخرآخر
نمايش نتايج 1 به 10 از 25

نام تاپيک: كد انجام شدن يه response

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2007
    پست ها
    58

    پيش فرض كد انجام شدن يه response

    سلام
    مي خوام بعد اينكه كار تابع send آجاكس تموم شد يه كاري انجام بدم. دستور شرطي چي ميشه؟
    مثلا براي اينكه بگيم request كامل انجام شد از 200 اسفاده مي كنيم

  2. #2
    حـــــرفـه ای eAmin's Avatar
    تاريخ عضويت
    Aug 2007
    محل سكونت
    Node.js
    پست ها
    2,259

    پيش فرض

    سلام.

    یک خرده پیشتر توضیح بده، این 200 چیه؟

  3. #3
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    خصوصیت onreadystatechange برای همین منظور است.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  4. 2 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  5. #4
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2007
    پست ها
    58

    پيش فرض

    سلام
    خصوصیت onreadystatechange برای همین منظور است.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نه منظورم 200 يا 4 نبود. اين شرط ها رو توي تابعي كه ايونت هنلدر onreadystatechange فاير ميكنه بررسي ميشه.

    من يه كد شرطي مي خوام كه برا بعده تابع send بزارم. مثلا فرض كنيد كد بالا اجرا كرديم و يه متني توي يه جايي مثلا div با آي دي test نوشته شده. حالا مي خوام اين دستور رو بعده send اجرا كنم.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگه بعد send درجا اين خط رو بيارم يه رشته ي تهي واسم آلرت مي كنه. در حالي كه من مي خوام اون چيزي رو كه تابع send توي دايو test نوشته واسم آلرت كنه. واسه اين كار يه وقفه اي چيزي لازم دارم مثل يه آلرت ديگه.
    من اون چيزه رو مي خوام حالا چيه خودمم نمي دونم! كد شرطي يا هر چيز ديگه!

  6. #5
    حـــــرفـه ای eAmin's Avatar
    تاريخ عضويت
    Aug 2007
    محل سكونت
    Node.js
    پست ها
    2,259

    پيش فرض

    نه منظورم 200 يا 4 نبود. اين شرط ها رو توي تابعي كه ايونت هنلدر onreadystatechange فاير ميكنه بررسي ميشه.

    من يه كد شرطي مي خوام كه برا بعده تابع send بزارم. مثلا فرض كنيد كد بالا اجرا كرديم و يه متني توي يه جايي مثلا div با آي دي test نوشته شده. حالا مي خوام اين دستور رو بعده send اجرا كنم.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگه بعد send درجا اين خط رو بيارم يه رشته ي تهي واسم آلرت مي كنه. در حالي كه من مي خوام اون چيزي رو كه تابع send توي دايو test نوشته واسم آلرت كنه. واسه اين كار يه وقفه اي چيزي لازم دارم مثل يه آلرت ديگه.
    من اون چيزه رو مي خوام حالا چيه خودمم نمي دونم! كد شرطي يا هر چيز ديگه!
    سلام.

    این یکی خوده خودشه!
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  7. #6
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2007
    پست ها
    58

    پيش فرض

    خدا وكيلي اين كجاش خوده خودشه؟
    ببين من توي كد بالايي آرگومان اول تابع req رو مي كنم test.php.
    توي test.php هم فقط يه خط نوشتم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا بعده خط
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نوشتم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نتيجه ش ميشه كد زير:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خب اينو اجرا كني چي ميشه؟ وقتي كاربر دكمه ي Go! رو ميزنه رشته ي test اينتو نوشته ميشه.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    بعد پنجره ي alert ظاهر ميشه كه منطقا بايستي رشته ي test رو نشون بده كه نشون نميده حالا چراش بماند. حالا اكه يه alert ديگه مثل alert('*) مابين دستور
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    قرار بگيره چي ميشه؟ هيچي اين دفعه رشته ي test توي پنچجره ي alert نشون داده ميشه.كه من اينو مي خوام. اينجا alert('*) يه جور وقفه است. كه اجازه ميده send كارشو انجام بده بعد دستور
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اجام شه كه طبيعتا جواب درست نشون ميده. حالا من مي گم جاي اون alert('*) چي چي بذارم كه همون كار رو انجام بده؟

  8. #7
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2007
    پست ها
    58

    پيش فرض

    آقا يكي به داد من برسه!!!

  9. #8
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    خدا وكيلي اين كجاش خوده خودشه؟
    به نظر من که لینک کاربر Amin eHelp nhnknT لینک بدی نبود ولی شما کمی دقت کافی ندارید.

    کاملاً واضح است که رویداد alert شما باید بعد از تکمیل عملیات و رسیدن اطلاعات رخ دهد نه بعد از ارسال اطلاعات.
    شما send میکنید و بعد هم alert؟؟؟؟ پس رویداد رسیدن اطلاعات کشک؟؟

    send را چنین اصلاح کنید و مجدداً تست کنید.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  10. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  11. #9
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2007
    پست ها
    58

    پيش فرض

    خوب من كه نگفتم كد ايشون كد بديه. كليم رفتم تو بحره كد ايشون وايني كه شما اين بالا نوشتين. ولي نوشته هاي شما هيچ كدوم جواب منو نميده. هدف من آلرت كردن كه نيست. من اينجا آلرت رو براي نمونه ذكر كردم. من اصلا نمي خوام آلرتم بعده تکمیل عملیات و رسیدن اطلاعات باشه بلكه مي خوام بعد از ارسال اطلاعات باشه. يعني دقيا مي خوام اول سند كنم بعد آلرت. اين وسطم رويداد دسيدن اطلاعات كشك نيست از اونم به موقش استفاده كردم.
    جريان اينكه من مي خوام با استفاده از responseText يه متني رو بگيرم. حالا اگه اين متن نشون دهنده ي خطاهاي فرم من باشه اونارو جلو فيلد هاي هر فرم بنويسه در غير اين صورت هيچي جلوي فيلد هاي فرمم نوشته نشه تمام اين كارا تا اتمام كار تابع send انجام ميشه. خوب اين تا اينجا!
    حالا بعده اينكه send كارشو انجام داد مي خوام يه سرچ كوچولو توي فرمم بكنم. اگه جلوي هر فيلد فرمم ديدم كه يه متني كه نشون دهنده ي وجود خطا توي اون فيلده وجود داشته باشه مي گم فرمم خطا داره و كاربر با زدن دكمه ي submit نمي تونه فرمش رو ارسال كنه نه اگه جلو تموم فيلد هاي فرمم خالي باشه كه نشون مي ده فرم هيچي ايرادي نداره كاربر با زدن دكمه سابميت بره به صفحه اي كه توي اتريبيوت تگ form مشخص كردم. خوب اين تا اينجا!
    آلرتيم كه اون بالا گفتم براي تست كردن همين سرچه. مي خوام ببينم دقيقا بعده send جواب ميده يا نه كه بالا كدشو گذاشتم كه ديدم جواب نميده. يعني بايد از يه كدي استفاده كنم كه اين كد جلوي اجراي آلرت رو تا موقعي كه Send كارشو تومو نكرده بگيرم. بعده اينكه send كارشو تموم كرد و خطاها توي صفحه نوشته شدند آلرت اجرا شه.
    اميدوارم تونسته باشم سوالم رو توضيح بدم!
    ولي فكر كنم اگه كدي رو كه يه كوچولو اصلاح شده ي كدهAmin eHelp هستش و تو دو پست قبليم فرستادم اجرا كنيد دقيقا متوجه مشكل من مي شيد.
    شديدا التماس كمك دارم
    Last edited by milad_66; 17-08-2008 at 21:27.

  12. #10
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    من احساس میکنم مشکل شما با مفهوم عملیات های غیر همزمان است یا اصطلاحاً Async .
    شما تصور صحیحی از عملیان ها ی چند ریسمانی ندارید.

    من فکر میکنم شما اینطور تصور میکنید که اول send انجام میشود و بعد رویداد onreadystatechange اتفاق می افتد و در اخر هم دستور بعد از send، درست است؟

    اگر اینطور فکر میکنید، این کاملاً اشتباه است، کاملاً.

    اگر اینطر بود اصولاً چه نیازی به onreadystatechange بود؟؟؟ خوب همان بعد از متد send خروجی را میگرفتیم؟! یعنی اول send و بعد هم خواندن responseText و بعد هم مابقی کدها؟ پس باز هم onreadystatechange کشک !


    شما با فراخوانی متد send یک ریسمان مجزا را فعال میکنید و فوراً دستور بعد از send انجام میشود و کار ریسمان جاری پایان میگیرد! تمام.

    بعد ان ریسمان مجزا که فعال شده، سر فرصت به صفحه مورد نظر در وب وصل شده و درخواست میدهد، پردازش کدهای سمت سرور php یا asp و asp.net و... در سرور آغاز میشود و بعد اطلاعات خرامان خرامان دانود میشد، عین پروسه باز کردن یک صفحه در مرور گر.
    بعد که اطلاعات کامل دانلود شد و همه چیز تمام شد، آن ریسمان به عنوان اخرین کارش onreadystatechange را با readyState=4 و status = 200 فراخانی میکند تا اجرا شود و بعد کار این ریسمان هم تمام میشود.
    این پروسه دقیقاً مثل آوردن یک صفحه و دیدن در IE است، بسته به حجم آپلود و دانلود و سنگینی کدهای سرور و سرعت اینترنت و ترافیک شبکه و... میتوانید بین کسری از ثانیه تا چندین دقیقه طول بکشد.

    در حالی که دستور بعد از send چون در ریسمان مجزا اجرا شده بود، منتظر نخواهد ماند و فوراً اجرا میشود.
    شما هر کاری را نیاز دارید بعد از رسیدن داده ها انجام شود، باید در رویداد onreadystatechange وارد کنید نه بعد از send.
    اصولاً بعد از send دیگر کاری ندارید که انجام دهید.

صفحه 1 از 3 123 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •