تابع برای ارسال request به سمت سرور

سلام به همه دوستان
وقتتون بخیر
برای ارسال request به سمت سرور یک تابع ایجاد کرده ام که کارم راحت کنه ، ولی تابع که ساختم مقدار undefined برمیگردونه
تابعی که ساختم

    export let postRequest = function (username, password, url) {
       let req = new XMLHttpRequest();
       req.open("POST", url, true);
       req.responseType = "json";
       req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
       req.send("username=" + username + "&password=" + password);

       req.onreadystatechange = function () {
           if (req.readyState == 4 && req.status == 200) {
            return req.response;
           }
       };
   };

علت اینکه undefined بر می گردونه اینکه توی شرط نوشته شده مقدار readyState مساوی با ۴ نیست بخاطر همین داخل بدنه شرط اجرا نمیشه و یک return پیش فرض با مقدار undefined اتفاق می یوفته

می خوام تابعی که ساختم سه پارامتر ورودی بگیره سپس مقادیر در قالب یک object برگردونه
لطفا کمک کنید

سلام.
بله عزیز تابعت undefined بر میگردونه چون منتظر نمیمونه جواب درخواست بیاد.

( البته تابع اصلیت هم return نداره - اون return واسه تابعیه که به onreadystatechange مقدار دهی شده)

1 Likes

میتونید از قابلییت promise یا async/await یا callback function برای هندل کردن درخواست وقتی جوابش رسید استفاده کنید

1 Likes