首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在匿名函数javascript中实现函数不同行为

如何在匿名函数javascript中实现函数不同行为
EN

Stack Overflow用户
提问于 2018-06-03 06:28:08
回答 2查看 31关注 0票数 0

我是JavaScript的新手,我想使用两次send_request函数,但使用不同的行为。名为button1的元素应显示对该元素的响应,而button2则不显示。

代码语言:javascript
复制
  function send_request(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.send('data=test');
    xhr.onload = function () {document.getElementById('reply').innerHTML = xhr.responseText;};
  }
  document.getElementById('button1').addEventListener('click', function() { send_request("/data.php"); });
  document.getElementById('button2').addEventListener('click', function() { send_request("/clear_data.php"); });

有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-03 06:32:41

你可以给send_request另一个参数,一个用responseText调用的函数,这样你就可以传递一个赋值给reply的函数,而另一个函数可以做任何你想做的事情:

代码语言:javascript
复制
function send_request(url, callback) {
  var xhr = new XMLHttpRequest();
  xhr.open('POST', url, true);
  xhr.send('data=test');
  xhr.onload = () => callback(xhr.responseText);
}
document.getElementById('button1').addEventListener('click', function() {
  send_request("/data.php", (responseText) => {
    document.getElementById('reply').innerHTML = responseText;
  });
});
document.getElementById('bitton2').addEventListener('click', function() {
  send_request("/clear_data.php", (responseText) => {
    console.log('bitton 2 response: ' + responseText);
  });
});
票数 0
EN

Stack Overflow用户

发布于 2018-06-03 06:32:10

有许多方法可以实现这一点,但是如果我们从您的基本需求开始,您可以让send_request简单地接受一个参数,以确定元素是否应该显示响应。

代码语言:javascript
复制
function send_request(url, showResponse) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.send('data=test');
    xhr.onload = function () {
      // If showResponse is true, log the response. If not, don't
      showResponse ? document.getElementById('reply').innerHTML = xhr.responseText : null;
    };
  }

  document.getElementById('button1').addEventListener('click', function() { 
    // Call the function and indicate that the response should be shown
    send_request("/data.php", true); 
  });

  document.getElementById('bitton2').addEventListener('click', function() { 
    // Call the function and indicate that the response should not be shown
    send_request("/clear_data.php", false); 
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50661689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档