首页 > 解决方案 > 如何在javascript中的另一个函数中使用函数作为对象的属性

问题描述

我正在尝试创建一个将对象作为参数的函数,并且在对象内部我想要一个对象方法,就像 jQuery ajax 的工作方式一样。我现在的问题是我无法让该对象方法工作。

function myAjax({
  type,
  url,
  success
}) {
  var suc = "";
  typeof type === "undefined" ? type = "GET" : type = type;

  var req = new XMLHttpRequest();
  req.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      suc = this.responseText;
      //alert(this.responseText);
    }
  };
  req.open(type, url, false);
  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded ");
  req.send("fname=chijioke&lname=francis");

  function success(suc) {}
  }




  myAjax({
    type: "post",
    url: "page.html",
    success: function(e) {
      alert(e);
    }
  });

我想做一些类似于这个 jQuery ajax 调用的事情

$.ajax({
  type: "post",
  url: "index",
  data: {
    id: id
  },
  success: function(feedback) {
    alert(feedback);
  }
});

我需要responseText通过成功功能,但它不起作用。我希望它像 jQuery ajax 成功一样工作,这真的是为了学习目的。

标签: javascript

解决方案


您正在尝试做的事情称为回调函数。与其在函数内部声明函数,不如调用传递给它的函数。

所以而不是

    function success(suc) {}

尝试做

    success(suc);

https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced这是我找到的关于该主题的指南。


推荐阅读