【问题标题】:Jquery nested $.GET calls do not work?Jquery 嵌套的 $.GET 调用不起作用?
【发布时间】:2012-08-15 23:01:25
【问题描述】:

我发现对 $.get 的嵌套调用在 JQuery 中不起作用。我已经将我的情况归结为如下所示。第一次调用 $.get 然后回调 如果条件为真,函数会再次调用 $.get。即使我看到条件为 true 的警报,似乎也没有进行第二次调用。

有没有人让这样的嵌套工作?

function callbackFn (responseText, textStatus, XMLHttpRequest) {
    alert("About to make call.  Condition is " + someCondition);
    if (someCondition) {
        $.get("localhost:8080/MyServlet?action=bar");
    }
    document.location.href = "http://www.google.com"

}

$(document).ready(function() {
    $.get("localhost:8080/MyServlet?action=foo", callbackFn);

} 

【问题讨论】:

  • 您在第二个有机会做任何事情之前更改了文档位置($.get 是异步的)
  • 严格来说,第二个调用应该是一个帖子。它只是通知服务器一些事情,不需要任何返回值,所以它可以在第二次调用完成之前转到下一页

标签: jquery callback get nested


【解决方案1】:

最好链接不同的 ajax 请求,因为它们是异步的。链接最好用 .succes() .complete()

【讨论】:

  • 原来我的错误是第二次调用 $.get() 的 URL 的错误参数。嵌套 $.get 工作正常,jsfiddle 是一个值得测试 javascript 和 jquery 想法的工具。
  • 您不应该以您的方式嵌套它们。也许它在测试时工作正常,但有时可能会出现第一个请求的响应时间更长,第二个已经开始,导致不稳定。你会发现...总是使用成功、完成和错误等 ajax 回调
【解决方案2】:

试试this(使用jsfiddle "/echo/html/" 来测试AJAX):

function callbackFn (data) {
    alert(data);
    if(data === 'First POST') {
        $.ajax({
          type: 'POST',
          url: "/echo/html/",
          data: {
                html: 'Second POST'
                },
          success: callbackFn,
          dataType: "HTML"
        });
    }
}

$(function() {
    $.ajax({
      type: 'POST',
      url: "/echo/html/",
      data: {
            html: 'First POST'
            },
      success: callbackFn,
      dataType: "HTML"
    });
})

【讨论】:

  • 嘿,这个 jfiddle 是一个很酷的工具。所以我用 $.get 重新编码了你的小提琴并且它有效。我的原始帖子是从一段更复杂的代码中总结出来的,所以我必须构建另一个更接近实际代码的示例,以查看是否/何时可以让小提琴失败。
猜你喜欢
  • 2011-06-12
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多