通过调试可以达到部分ajax功能

时间:2015-03-17 08:26:27

标签: jquery ajax asp.net-mvc debugging firebug

我有一个asp.net应用程序,我在其中使用jquery。 在我的jquery代码中,我有一个简单的ajax请求,如下所示:

var allowDelete = true;
$.ajax({
              url: '...',
              dataType: 'json',
              type: 'post',
              data: { something...}
          })
          .success(function (response) {
              if (response.Passed) {
                 //do something
              }
              else {
                  //do something
                  allowDelete = false;
              }
          })
          .error(function () {
              // do something
          });

 if (allowDelete) {
//something
}

正如您所看到的,当我的Passed var值为false时,我想要一个var set false。 当我只运行没有任何断点的代码时,allowDelete var永远不会设置为false。当我在我设置allowDelete false的行旁边放置一个断点(在firebug中)时,它永远不会到达断点。但是当我在函数的beginnig中放置一个断点并通过整个ajax进行调试时,一切都运行得很好并得到我想要的结果。知道错误可能在哪里吗?

1 个答案:

答案 0 :(得分:1)

因为你在一个多月前提出这个问题,所以可能会迟到,但希望有所帮助:

原因是AJAX是异步的: 1.将allowDelete设置为true。 2.你调用你的AJAX函数。它开始工作,转向你的服务器等。 3.检查allowDelete。这仍然是事实。 4.如果条件正常(响应未通过),则AJAX调用返回,将allowDelete设置为false。

因为异步,在调用AJAX函数后立即检查allowDelete,不等待答案(AJAX回调方法)。基本上,你的AJAX函数回调方法运行得太晚了。

当您使用断点时,您的AJAX调用有足够的时间从服务器获得答案,因此上面的第四点发生在第三点之前。