Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取WatiN测试的异步回发状态_C#_Ajax_Coldfusion_Extjs_Watin - Fatal编程技术网

C# 获取WatiN测试的异步回发状态

C# 获取WatiN测试的异步回发状态,c#,ajax,coldfusion,extjs,watin,C#,Ajax,Coldfusion,Extjs,Watin,下面的这篇文章几乎说明了一切。唯一的问题是解决方案(我在评论部分查看Randy的解决方案)是特定于ASP.Net的,我正在使用WatiN测试一个ColdFusion网站。所以我需要一个能和ColdFusion一起工作的解决方案 我知道我可以使用Thread.Sleep()并暂停一定的时间,但我真的希望有一个解决方案可以等待AJAX回发完成,然后立即继续运行 理想情况下,我希望找到一个javascript调用,用于替换ASP.Net特定的“Sys.WebForms.PageRequestMana

下面的这篇文章几乎说明了一切。唯一的问题是解决方案(我在评论部分查看Randy的解决方案)是特定于ASP.Net的,我正在使用WatiN测试一个ColdFusion网站。所以我需要一个能和ColdFusion一起工作的解决方案

我知道我可以使用Thread.Sleep()并暂停一定的时间,但我真的希望有一个解决方案可以等待AJAX回发完成,然后立即继续运行

理想情况下,我希望找到一个javascript调用,用于替换ASP.Net特定的“Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()”调用

有什么想法吗

更新:

@绝地大师 谢谢你的回复。请允许我澄清。基本上,我知道当我执行特定操作时,它会调用AJAX请求。我想知道是否有JavaScript可以运行(在客户端)来告诉我AJAX请求已经完成。我可以使用JavaScript查询当前HTTP请求并检查它是否与XMLHttpRequest匹配吗?如果是这样,你的解决方案可能对我有用

@彼得·布顿 “如果您想劫持/监视客户端上的HTTP请求,您将需要连接已明确配置为使用的代理软件……您不能在web浏览器中使用JavaScript执行此操作。”

是的,就是这样。我希望监视来自客户端的AJAX请求,以查看它何时完成。我想这是因为您无法在JavaScript中执行此操作,因为ASP.Net解决方案还需要回调web服务器以查看请求是否已完成

因此,我想问题是:ColdFusion是否支持可以用来监视AJAX请求状态的方法或代理(如ASP.Net get_isInAsyncPostBack()方法)?或者,这是否需要CF开发人员在系统中创建一个自定义“钩子”,以返回AsyncPostBack状态

@彼得·布顿:再次感谢你的投入。我想给你一个公认的答案,但正如你所指出的:如果你确实想要一个基于CF(即extJS)的方法,你必须等待使用该方法的人给出一个同等的答案。

听起来像是在说-有没有办法判断当前请求是否通过Ajax完成?是这样吗?如果是的话,你不能。Ajax请求只不过是另一个HTTP请求。您可以检查名为X-Requested-With的HTTP。如果该值是XMLHttpRequest,则比基于Ajax的请求中的值(可能!)要高。它不是完全证明,但一般来说应该是有效的

更新:我得说,我还是有点困惑。你似乎在问两个截然不同的问题:

“我想知道是否有JavaScript可以运行(在客户端)来告诉我AJAX请求已经完成。”

当然。根据您使用的框架,您可以说,运行某某ajax请求,并在完成后运行此函数。例如,jQuery使这变得相当简单

“我可以使用JavaScript查询当前HTTP请求并检查它是否与XMLHttpRequest匹配吗?”

这对我来说毫无意义。我读了好几遍,就是不明白你的意思。抱歉。

没有“当前HTTP请求”-您可以同时运行多个请求

JavaScript的XmlHttpRequest可以发送和接收请求,这就是它所做的

如果要劫持/监视客户端上的HTTP请求,则需要连接已明确配置为使用的代理软件。在web浏览器中不能使用JavaScript执行此操作

更新:

ColdFusion是否支持一种方法或方法 代理(如ASP.Net) 获取我需要的_isInAsyncPostBack()方法) 可以用于监视 AJAX请求

不知道;我不使用CF的ajax工具,我使用jQuery,并且不需要对此进行具体检查

使用jQuery,您可以使用.ajax*事件为此设置一个变量,例如,类似这样的事情应该可以实现:

var isInAsyncPostBack = false;
jQuery.ajaxStart( function(){ isInAsyncPostBack = true; } )
jQuery.ajaxStop( function(){ isInAsyncPostBack = false; } )

如果您确实想要基于CF(即extJS)的方法,您必须等待使用该方法的人给出相应的答案。

我已在问题中添加了extJS标记,希望extJS用户能够看到这一点并回答您的问题。:)