嵌套在 .get 请求中的 jQuery 不会执行

jQuery nested within .get request won't execute

本文关键字:jQuery 执行 get 请求 嵌套      更新时间:2023-09-26

我有以下jQuery get请求,它以键名"data"返回html文本:

$(".article").click(function() {
  $.get("<%= click_path %>", function(data) {
    $(".article").html(data);
  });
});
执行

除行$(".article").html(data);之外的所有代码。事实上,我放在get请求中的任何jquery代码都无法执行,即使如果我将其移动到get请求之外,它仍然可以正常工作。有人认为我的语法有什么问题吗?

jQuery的$.get方法是一个别名,$.ajax假定的HTTP请求方法为GET,并且无法指定许多选项。你给它一个 URL 和一个函数,以便在成功检索该 URL 时运行。它尝试GET该 URL,如果可以,成功函数将运行。如果不能,或者响应数据有问题,它将静默失败,并且不会运行给定的函数。

既然如此,我认为您的请求在某处失败了。

您需要在开发人员的控制台中查找错误并检查请求。

您还可以更改代码以使用 $.ajax 并将选项与当前参数一起传入error方法。如果调用 error 方法,您将收到 jqXHR 实例、字符串textStatus 和字符串errorThrown作为参数。将这些传递给console.log,并查看它们以寻找有关问题所在的线索。

$(".article").click(function() {
    $.ajax({
        url: "<%= click_path %>",
        success: function(data) {
            $(".article").html(data);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(textStatus);
            console.log(errorThrown);
        }
    });
});

很有可能,你的 ajax 请求无法执行,因此,回调中的 jQuery 代码永远不会运行。

请改为运行以下命令,并查看是否发出错误警报:

var jqxhr = $.get( "<%= click_path %>", function() {
  alert( "success" );
}
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "finished" );
  });