同时Ajax调用JS返回数据Incorreclty

时间:2018-04-20 22:22:38

标签: javascript jquery ajax twitch

我试图通过两个不同的ajax调用将字符串放入数组中。然后使用字符串名称的ID创建Div,并包含有关从ajax请求流式传输哪些抽搐的数据。

问题是我正在努力这样做,元素通过第一个ajax调用然后经过第二个因为ajax调用是异步的。因此,数组中的元素将在第一个ajax请求完成之前通过第二个ajax请求,并尝试进入尚未创建的div。

为了解决这个问题,我把第二个ajax请求放在第一个请求中,如下所示:

ajax request {

使dis

的代码

第二个ajax请求}

这似乎使得数组中的元素以正确的顺序返回,但是div没有正确显示来自ajax请求的数据。我注意到,在记录In [61]: x Out[61]: array([1, 6, 7, 9, 3, 5]) In [62]: y Out[62]: array([3, 5, 8, 9, 2]) In [63]: z = np.concatenate((x, y)) In [64]: z Out[64]: array([1, 6, 7, 9, 3, 5, 3, 5, 8, 9, 2]) In [65]: _, i = np.unique(z, return_index=True) In [66]: z[np.sort(i)] Out[66]: array([1, 6, 7, 9, 3, 5, 8, 2]) 变量时,数组中只有一个元素似乎被传递给第二个ajax请求。

[console log] [1]

无论如何,我仍然在学习如何排除故障,所以任何提示都会受到高度赞赏。

[这应该是它的样子] [2]

以下是JS,如果有帮助,这里有一个指向codepen的链接:https://codepen.io/mso122591/pen/jxNoBV

name

1 个答案:

答案 0 :(得分:0)

解决这个问题的一种方法是承诺。我很快就用$ .when宣传了你的jquery,并修复了你的页面。

您的代码存在一些问题。有一个未使用var声明的变量,因此它创建了一个全局变量,因此您始终只获得最新的http get值。

我使用过" let"用于声明变量并将它们放在for循环中的关键字。这将创建一个局部变量,该变量仅在每个循环中有效且不会被覆盖。 for循环用作计数器变量" i"也没有声明,所以这也成为一个全局变量。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

https://api.jquery.com/jquery.when/

$.when(your ajax code)

https://codepen.io/anon/pen/Qrbzqx

这将在一个对象中创建一个具有两个响应的对象。您现在可以使用它将HTML写入文档

注意.then()会在每次http get

之后触发