hoseni_68 1 ارسال شده در مهر 98 گزارش بازنشر ارسال شده در مهر 98 با سلام خلاصه و مفید : من یک کد جاوا دارم که اول با action ارسال اطلاعات ارسال میکنه و پاسخی را دریافت میکنه. بعد از اینکه پاسخ را دریافت کرد، سایر کدها بر اساس آن پاسخ اجرا میشوند. مشکل : زمانی که پاسخ میخواد دریافت بشه چند ثانیه طول میکشه که قبل از رسیدن پاسخ سایر کدهای جاوا اجرا میشن و بر اساس این پاسخ عمل نمی کنند. کد زیر رو ببینید: jQuery('#carrental_confirm_reservation').on('submit', function(e) { message = document.getElementById("message").innerHTML; if (errors.length == 0) { if (message !== 'Approved!' ) { var a; if(window.XMLHttpRequest){a=new XMLHttpRequest()} else{a=new ActiveXObject("Microsoft.XMLHTTP")} a.onreadystatechange=function(){ if(a.readyState==4&&a.status==200){ document.getElementById("message").innerHTML =a.responseText } }; a.open("POST","<?php bloginfo('url');?>/actions",true); a.setRequestHeader("Content-type","application/x-www-form-urlencoded"); a.send("code="+ccnumber) } message = document.getElementById("message").innerHTML; if (message !== "" ) { if (message !== 'Approved!' ) { alert ("not approved!"); return false; }else{ alert ("Thanks!"); return true; } } } این کد زمانی اجرا میشه که دکمه submit فرم کلیک بشه چکار کنم که سایر کدها اجاره نشن تا document.getElementById("message").innerHTML =a.responseText کامل جواب درونش قرار بگیره و بقیه کدها اجرا بشن. خیلی از راه های callback، wait و غیره رو رفتم جواب نداد، در واقع جاوا اسکریپت stop نداره و همزمان انجام میدن. از alert استفاده کردم، زمانی که پیغام در حال نمایش بود و منتظر فشردن دکمه بود. مقدار دهی انجام شد و درست کار کرد. ولی متاسفانه داخل فایرفاکس درست بود ولی داخل کروم جواب نداد. با تشکر فراوان نقل قول لینک به ارسال
Mobin 1669 ارسال شده در مهر 98 گزارش بازنشر ارسال شده در مهر 98 کد ها رو درون تابع بعد از document.getElementById("message").innerHTML =a.responseText; قرار بدین تا درست اجرا بشه در غیر این صورت باید از async-await استفاده کنید نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .