Javascript 理解/使用回调函数的问题

Javascript 理解/使用回调函数的问题,javascript,php,ajax,xml,Javascript,Php,Ajax,Xml,在讨论和聊天中,我明白回拨是唯一的出路 " 使用ajax从服务器获取链接,将链接写入变量,使用此链接打开xml,使用xml做一些事情:回调是唯一的方法吗? " 我想知道什么是回调。我读了一些博客,但还是有问题 我现在在JS中看到的是 1) 用于打开xml的函数 2) 函数请求第一个函数中的xml链接 有人能提供一个简单的JAVASCRIPT示例来说明如何嵌套这两个函数吗 服务器生成xml的链接,因为我正在创建一个多用户网站,每个用户都有自己的xml。所以我需要询问服务器xml的链接是什么,然后打

在讨论和聊天中,我明白回拨是唯一的出路

" 使用ajax从服务器获取链接,将链接写入变量,使用此链接打开xml,使用xml做一些事情:回调是唯一的方法吗? "

我想知道什么是回调。我读了一些博客,但还是有问题

我现在在JS中看到的是

1) 用于打开xml的函数

2) 函数请求第一个函数中的xml链接

有人能提供一个简单的JAVASCRIPT示例来说明如何嵌套这两个函数吗


服务器生成xml的链接,因为我正在创建一个多用户网站,每个用户都有自己的xml。所以我需要询问服务器xml的链接是什么,然后打开它。有没有一个简单的方法来实现这一点?我需要纯javascript而不是jquery。
谢谢

如果只需要下载xml,则不需要回调。看看jquery和ajax。无法从服务器检索回调。JSONP确实处理由服务器调用的回调(实际上它们不是),因为您不需要它。我认为您正在发送xhtprequestobject的消息,如果您只需要下载一个xml,则不需要回调。看看jquery和ajax。无法从服务器检索回调。JSONP确实处理由服务器调用的回调(实际上它们不是),因为您不需要它。我认为您正在发送xhtprequestobject的消息,如果您只需要下载一个xml,则不需要回调。看看jquery和ajax。无法从服务器检索回调。JSONP确实处理由服务器调用的回调(实际上它们不是),因为您不需要它。我认为您正在发送xhtprequestobject的消息,如果您只需要下载一个xml,则不需要回调。看看jquery和ajax。无法从服务器检索回调。JSONP确实处理由服务器调用的回调(实际上它们不是),因为您不需要它。我认为您是在传递xhtprequestobject的消息。一般来说,“回调”是一个函数,它将在稍后异步进程完成时执行

因此,您可以从定义从服务器检索数据时应该发生的功能开始(直观地说是“第二个”功能,但您应该首先定义它,因为它是您希望实现的业务功能,而不仅仅是实现问题)。简单到:

var doSomethingWithTheData = function () {
    // do, well, something with the data
};
这假设您拥有数据,而您还没有。但是AJAX调用将获得这些数据。现在可以使用此函数作为AJAX调用的回调。采取以下措施:

var httpRequest;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
httpRequest.onreadystatechange = doSomethingWithTheData;
// perform the AJAX request
执行并完成AJAX调用后,
httpRequest
对象将包含来自服务器的响应。(请记住,这是异步发生的,因此它不会在下一行代码中包含响应。它会在稍后的某个时间发生,而您无法控制。因此需要回调。)

我建议您仔细阅读这篇完整的MDN文章,以了解所有细节,尤其是处理错误等方面的细节。但是您要查找的数据(假设没有出错)将位于
httpRequest.ResponseText
中。因此,还假设变量的作用域允许这样做(您可以根据需要修改):

通常,“回调”是一个函数,它将在异步进程完成后的稍后时间执行

因此,您可以从定义从服务器检索数据时应该发生的功能开始(直观地说是“第二个”功能,但您应该首先定义它,因为它是您希望实现的业务功能,而不仅仅是实现问题)。简单到:

var doSomethingWithTheData = function () {
    // do, well, something with the data
};
这假设您拥有数据,而您还没有。但是AJAX调用将获得这些数据。现在可以使用此函数作为AJAX调用的回调。采取以下措施:

var httpRequest;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
httpRequest.onreadystatechange = doSomethingWithTheData;
// perform the AJAX request
执行并完成AJAX调用后,
httpRequest
对象将包含来自服务器的响应。(请记住,这是异步发生的,因此它不会在下一行代码中包含响应。它会在稍后的某个时间发生,而您无法控制。因此需要回调。)

我建议您仔细阅读这篇完整的MDN文章,以了解所有细节,尤其是处理错误等方面的细节。但是您要查找的数据(假设没有出错)将位于
httpRequest.ResponseText
中。因此,还假设变量的作用域允许这样做(您可以根据需要修改):

通常,“回调”是一个函数,它将在异步进程完成后的稍后时间执行

因此,您可以从定义从服务器检索数据时应该发生的功能开始(直观地说是“第二个”功能,但您应该首先定义它,因为它是您希望实现的业务功能,而不仅仅是实现问题)。简单到:

var doSomethingWithTheData = function () {
    // do, well, something with the data
};
这假设您拥有数据,而您还没有。但是AJAX调用将获得这些数据。现在可以使用此函数作为AJAX调用的回调。采取以下措施:

var httpRequest;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
httpRequest.onreadystatechange = doSomethingWithTheData;
// perform the AJAX request
执行并完成AJAX调用后,
httpRequest
对象将包含来自服务器的响应。(请记住,这是异步发生的,因此它不会在下一行代码中包含响应。它会在稍后的某个时间发生,而您无法控制。因此需要回调。)

我建议您仔细阅读这篇完整的MDN文章,以了解所有细节,尤其是处理错误等方面的细节。但是您要查找的数据(假设没有出错)将位于
httpRequest.response中