request.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import config from "../config/index.js";
  2. function getdata(data) {
  3. let text = "";
  4. for (const key in data) {
  5. text += key + "=" + data[key] + "&";
  6. }
  7. text ? (text = "?" + text) : "";
  8. text = text.replace(/&$/, "");
  9. return text;
  10. }
  11. export default function (ori) {
  12. let baseurl = config.base[ori.urlType || "defaultURl"];
  13. let url = baseurl + ori.url + getdata(ori.data || {});
  14. return new Promise((resolve, reject) => {
  15. var xhttp;
  16. if (window.XMLHttpRequest) xhttp = new XMLHttpRequest();
  17. else if (window.ActiveXObject)
  18. xhttp = new window.ActiveXObject("Microsoft.XMLHTTP");
  19. let method = ori.method.toUpperCase();
  20. xhttp.open(method, url, true);
  21. xhttp.setRequestHeader("Content-type", "application/json");
  22. method === "GET" ? xhttp.send() : xhttp.send(JSON.stringify(ori.data));
  23. xhttp.onreadystatechange = function () {
  24. if (this.readyState != 4 || this.status != 200) return;
  25. let data = {};
  26. try {
  27. data =
  28. this.responseText !== "null"
  29. ? JSON.parse(this.responseText || "{}")
  30. : {};
  31. } catch (err) {
  32. console.error(err);
  33. reject(err);
  34. }
  35. if (data.code === 0) resolve(data.data);
  36. else reject(data);
  37. };
  38. });
  39. }