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

时间:2015-03-14 02:32:45

标签: javascript jquery

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

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

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

2 个答案:

答案 0 :(得分:1)

jQuery的$.get方法是$.ajax的别名,其假定的HTTP请求方法为GET,并且无法指定许多选项。您可以为其提供URL和函数,以便在成功检索该URL时运行。它会尝试GET该网址,如果,则会运行成功功能。如果它不能,或者响应数据出现问题,它会无声地失败并且运行给定的函数。

在这种情况下,我会假设您的请求在某处失败。

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

您还可以更改代码以使用$.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);
        }
    });
});

答案 1 :(得分:1)

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

运行以下代码,查看是否收到错误警告:

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