رفتن به مطلب

اجرای سایر کدهای جاوا در صورت دریافت پاسخ api


پست های پیشنهاد شده

با سلام

 

خلاصه و مفید : من یک کد جاوا دارم که اول با 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 استفاده کردم، زمانی که پیغام در حال نمایش بود و منتظر فشردن دکمه بود. مقدار دهی انجام شد و درست کار کرد. ولی متاسفانه داخل فایرفاکس درست بود ولی داخل کروم جواب نداد.

 

 

با تشکر فراوان

لینک به ارسال

کد ها رو درون تابع بعد از

document.getElementById("message").innerHTML =a.responseText;

قرار بدین تا درست اجرا بشه در غیر این صورت باید از async-await استفاده کنید

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...