【问题标题】:Waiting for ajax request to finish before getting the resposne在获得响应之前等待ajax请求完成
【发布时间】:2010-09-24 18:09:38
【问题描述】:

我对 mvc 和 webtest 非常陌生,所以请在这里忍受我。

我有一个客户视图。客户视图在document.ready 上调用一个javascript 函数。此 javascript 调用对客户控制器中的操作执行 ajax 发布,该操作将 json 返回到原始 javascript,进而更新客户视图。

在我的 webtest 中,我有一个对客户视图的请求,但是在随后的 ajax 调用完成并且视图更新之前返回了响应,因此我没有最新的页面内容。

有没有办法等到后续请求完成,以便我可以分析包含所有数据的整个页面?还是我走错了方向?

这里是视图:

<script type="text/javascript" language="javascript">
    //Set initial state of list during page load
    $(document).ready(function() {
        ApplyFilters();        
    })
</script>

调用这个javascript:

function ApplyFilters() {
.....
$.ajax({
    type: "POST",
    url: "/Customer/FilterList",
    datatype: "html",
    beforeSend: function() {
        //do some stuff
    },
    success: function(result) {
        ...
        BindCustomrGrid($find(GridClientID), result);
    },
    error: function(req, status, error) {
       // do some stuff
    }
});
}

最后是控制器:

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult FilterList(string io, string name, string owner)
    {
        ... // some api calls
        return this.Json(new { customerList, serviceException });
    }

【问题讨论】:

  • 改用XMLHttpRequest

标签: asp.net-mvc visual-studio-2008 webtest


【解决方案1】:

我决定做的是发布到从 ajax 请求调用的 url,反序列化自定义验证类中的 json 并在那里验证它。

【讨论】:

    【解决方案2】:

    在这种情况下,我强烈推荐TestPlan 作为测试工具。它的优点是当您在页面上查找元素时,它会自动等待它们允许 JavaScript 完成执行。因此,如果您执行以下操作:

    Check //button[@id='get123']
    

    它将等到该按钮存在。显然它不会永远等待。在无显示后端,它会检查是否有任何 JavaScript 正在运行,如果没有,它会立即返回,因为不可能出现某些东西。

    【讨论】:

      【解决方案3】:

      成功函数在请求返回时运行。但是,您在加载 DOM 时开始此 ajax 调用。这很奇怪,通常会在用户执行某项操作或经过一定时间后发出一些 AJAX 请求。

      如果您想等到整个页面加载完毕后再发出 AJAX 请求,您可以使用:

      $(window).load(function() {
        ApplyFilters();        
      })
      

      【讨论】:

      • 这不是我的网站,我现在只是在测试它。 applyfilters 基本上抓取数据并填充网格。将此操作延迟到页面加载后很方便,因为它使响应时间更快,但我只是不确定如何测试它。
      猜你喜欢
      • 2013-09-26
      • 2022-01-26
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2014-02-19
      相关资源
      最近更新 更多