原生ajax发送POST和GET请求

我就是我 2022-10-11 01:11 330阅读 0赞

在写简单几个活动页面时可能不想引入其它文件,这时候发送请求消息给后端,可以自己写原生方法,以下是参考代码:

  1. // 原生ajax
  2. var ajax = function() { };
  3. ajax.prototype = {
  4. request: function(method, url, callback, postVars) {
  5. var xhr = this.createXhrObject();
  6. xhr.onreadystatechange = function() {
  7. if (xhr.readyState !== 4) return;
  8. (xhr.status === 200) ?
  9. callback.success(xhr.responseText, xhr.responseXML) :
  10. callback.failure(xhr,status);
  11. };
  12. if (method !== "POST") {
  13. url += "?" + this.JSONStringify(postVars);
  14. postVars = null;
  15. } else {
  16. postVars = this.JSONStringify(postVars);
  17. }
  18. xhr.open(method, url, true);
  19. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  20. xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
  21. xhr.send(postVars);
  22. },
  23. createXhrObject: function() {
  24. var methods = [
  25. function() { return new XMLHttpRequest(); },
  26. function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
  27. function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
  28. ],
  29. i = 0,
  30. len = methods.length;
  31. for (; i < len; i++) {
  32. try {
  33. methods[i]();
  34. } catch(e) {
  35. continue;
  36. }
  37. this.createXhrObject = methods[i];
  38. return methods[i]();
  39. }
  40. throw new Error("ajax created failure");
  41. },
  42. JSONStringify: function(obj) {
  43. var str = '';
  44. for(i in obj){
  45. str += i+'='+obj[i]+'&'
  46. }
  47. return str.slice(0,-1);
  48. }
  49. };
  50. // ajax完成后的处理函数
  51. var callback = { };
  52. callback.success = function(text, xml){
  53. text = eval('('+text+')');
  54. var html = '';
  55. for (var i = 0; i < text.datas.ad.length; i++) {
  56. html += '<li>'
  57. html += ' <span class="ad-dot"></span>'
  58. html += ' <a href="'+text.datas.ad[i].reurl+'" target="_blank">'+text.datas.ad[i].reurl_title+'</a>'
  59. html += '</li>'
  60. };
  61. adText.innerHTML = html;
  62. }
  63. callback.failure = function(xhr, status){
  64. alert('广告代码获取失败')
  65. }
  66. var ajax = new ajax();
  67. ajax.request('POST', '<{$apiurl}>index.php?route=website/goods/textAdCover', callback, param)

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读