【问题标题】:Change callback function name更改回调函数名称
【发布时间】:2016-07-15 23:32:07
【问题描述】:

嗨,我有这两个函数,get() 是一个自定义 ajax 请求函数,你可以看到它有两个参数 url 工作正常,但是作为回调的 func 似乎没有改变 func(serverResponse) ;什么document.write(serverResponse);。所以我想知道我到底做错了什么?如果 StackOverflow 上的一位开发人员能很快帮助我,那就太好了。非常感谢 :)

function get(url, func) {
            var xhReq = new XMLHttpRequest();
            xhReq.open("GET", url, false);
            xhReq.send(null);
            var serverResponse = xhReq.responseText;
            func(serverResponse); // Shows "15"
        }

        get('ip.php', 'document.write');

【问题讨论】:

  • 同步 ajax 是个可恶的东西
  • A.你为什么使用document.write? B. 你传递的是一个字符串,而不是一个函数。 C. 你可能需要使用document.write.bind(document)
  • 嗯,我有点需要它,因为我不会使用 3rd-party api 来获取用户 IP 地址。因为我想用我自己的。由于我已经完成了所有工作,我只需要这部分工作
  • 你这样做,还不如让服务器直接输出IP,根本不需要ajax。
  • @nnnnnn 你是什么意思我没有传递函数,document.write.bind(document) 有什么区别?

标签: javascript ajax callback xmlhttprequest


【解决方案1】:
get('ip.php', 'document.write');

应该是:

get('ip.php', document.write.bind(document));

前者传递一个字符串;后者传递一个函数。

也许是做这种事情的更典型的方式:

get('ip.php', function (text) {
    document.write(text);
});

【讨论】:

  • 必须是document.write.bind(document)
  • 谢谢!那行得通,一旦 8 分钟结束,我会接受你的回答 :)
猜你喜欢
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多