2

我有一个网页,其中包含几个 jQuery ajax 调用,它们同时针对 .NET web 方法异步触发。

这些 Web 方法返回数据以供每个 .ajax 调用的成功回调处理。

我的问题可能是低级的。jQuery/Javascript 如何知道哪些数据返回到哪个 .ajax 调用?我使用网络嗅探器查看了返回数据包,但看不到任何可用于将其链接回其发起呼叫的标识类型。我猜它与 jqXHR 对象有关。如果它在响应数据包中,我在嗅探器中看不到它。

任何技术解释都可能会有所帮助。

另外: 我问这个是因为我将在服务器端使用异步方法。.ajax 最初调用的方法不是返回数据的方法。另一个线程正在做这项工作。

4

5 回答 5

5

与浏览器可以从 Web 服务器请求多个图像并知道将每个图像放在页面上的哪个位置的方式相同。它是 HTTP 协议的一部分。浏览器发送一个请求,响应在同一个 TCP 套接字上发送。如果浏览器同时等待多个对象,则它打开了多个 TCP 套接字。

在您的数据包嗅探器中,仔细查看 TCP 端口号,尤其是响应端口(不是 80 的端口)。

你的浏览器和你的网络服务器/框架会做正确的事。在服务器端,请确保您将响应发送到适当的请求,并且无论收到的订单/处理时间如何,它都会返回到 jquery 中的正确位置。如果您有多个线程在服务器上交换数据,那么您的生活就会变得比需要的更加艰难,因此我认为您有充分的理由知道自己在做什么。

于 2011-04-07T19:39:02.513 回答
1

我相信这篇文章可能包含您正在寻找的一些信息。HTTP 请求和响应通过称为交换的过程配对。

HTTP 请求+响应的名称

XMLHttpRequests 在请求后向浏览器返回 HTTP 状态码(例如 200、304、500 等)和 readyState。jQuery ajax 使用 XMLHttpRequest 来确定哪些代码是成功的,哪些是失败的。

https://developer.mozilla.org/En/Using_XMLHttpRequest

http://api.jquery.com/jQuery.ajax/

于 2011-04-07T19:28:17.200 回答
1

这是通过一个称为闭包的概念。简而言之,AJAX 调用始终引用您的成功回调,例如:

function ajax(params, callback){
    // fire off AJAX call
    // on response:
    callback(data);
}

如果您多次调用ajax,callback则每次调用都是一个新变量。几年前我写了一篇关于这个概念的文章,可能会有所帮助:http ://www.htmlgoodies.com/primers/jsp/article.php/3606701/Javascript-Basics-Part-9.htm

于 2011-04-07T19:37:22.867 回答
0

当进行 AJAX 调用时,jQuery 创建对底层对象的内部引用XMLHTTPRequest并将事件处理程序绑定到该对象。

于 2011-04-07T19:38:05.140 回答
0

您是否曾经在没有库的情况下使用过XMLHttpRequest 对象?如果你这样做,很容易理解。我建议你去编写 10 行代码,看看它是如何工作的。

您为要向服务器发出的每个请求创建一个 XMLHttPRequest 对象的实例。您为其分配了一个 onreadystatechange 事件处理程序,该处理程序将被调用 4 次。当 readystate 达到 4 时,就完成了。在 JQuery 的情况下,它会调用您的回调函数。

于 2011-04-07T19:39:23.283 回答