我正在使用jQuery $ ajax。我正在向一个代理“服务器”发送三个查询,这实际上是一个工业设备中的一块板。
他们查询XML数据,响应显示在网络浏览器中。
它在大多数情况下都很好用,但有时响应会变得不同步。
这就是我要经过的。
查询 - GET:Device_AB>单位
URL - aaaaaaaaa / device.xml?query = GET%3ADevice_AB%3EUnit& _ = 1419001010182
查询 - GET:Device_AB> Device1> CD> EFG
URL - aaaaaaaaa / device.xml?query = GET%3ADevide_AB%3EDevice1%3ECD%3EEFG& _ = 1419000598786
查询 - GET:Device_AB>单位>状态
URL - aaaaaaaaa / device.xml?query = GET%3ADevice_AB%3EUnit%3EStatus& _ = 1419002064896
正在发生的事情是,不是接收对第一个GET的正确响应(应该是Unit(1st)XML标记内的内容),而是通信不同步,响应来自EFG(2nd)XML标记或Status(3rd)XML标记。对于Status XML标记的内容,GET查询也是如此。 URL末尾的后缀每次都是唯一的。有谁知道为什么响应没有与正确的呼叫相关联?我在大约半秒钟内重复对所有三个人的呼叫,因此屏幕上的数据会不断更新。 javascript非常复杂,涵盖了几个页面。我相信JavaScript很好。这是非常标准的,并且正在研究其他工业设备而没有同步丢失。在我看来,只要呼叫正确进行,响应的同步问题可能在服务器上。如果不了解服务器如何处理和返回数据,我的问题更多的是理论问题。服务器如何知道哪个GET将响应发送回?,或者换句话说,服务器如何将响应与正确的GET呼叫联系起来?
在几个javascript页面中有很多ajax部分,但我相信这是这个应用程序的相关部分。还有更多,但如果我不需要,我真的不想把它分开。我相信问题是服务器端。
this.ajaxParameters = {
type: "GET",
url: this.url,
data: {query:"GET:"+this.xmlPath},
dataType: (self.groupMode === true) ? "xml" : "text",
timeout: 5000,
cache: false,
success: function(data) {
self.parseResponse(data);
},
error: function() {
$("#errorfield").text("no communication");
},
complete: function() {
self.ajaxInProgress = 0;
}
};