将信息传递到 jQuery ajax 响应处理函数中

Pass information into jQuery ajax response handling function

本文关键字:ajax 响应 处理函数 jQuery 信息      更新时间:2023-09-26

假设我正在这样做:

$.get("/api/GetComments?post=" + post, function(data) {
    var a = JSON.parse(data);
    console.log("comments=" + a.count);
});

但是,当我执行.get时,我需要提供有关请求的元数据,响应处理函数可以访问这些数据(而无需将其传递到服务器和从服务器传递),即类似的东西?

$.get("/api/GetComments?post=" + post, function(data, id_of_div_to_update) {
    var a = JSON.parse(data);
    $("div[id=" + id_of_div_to_update + "]").text(a);
});

首先,您可以将数据作为更清晰和可读的对象传递,而不是在url中传递它。使用 getJOSN 以 JSON 形式获取响应,其中包括您需要更新的div ID

$.getJSON(url, {"post":post},function(data) {
    console.log("comments=" + data.count);
    console.log("div_to_update=" + data.id_of_div_to_update);
}

你的回答应该是这样的

{"count":1,"id":12}

更新

由于我假设您已经知道要更新的div 的 ID,因此您可以将其设置为变量并稍后使用

 var id_of_div_to_update="something";
$.getJSON(url, {"post":post},function(data) {
    console.log("comments=" + data.count);
    console.log("div_to_update=" + id_of_div_to_update);
}

通常不需要这样做,因为您的 ajax 调用存在于闭包(函数)作用域中,这意味着它知道(您定义所需的任何数据)有关一些其他数据 可视化回调数据需要:

// ...
(function(){
    // ...
    var id_of_div_to_update = '#output';
    // ...
    $.get("/api/GetComments?post=" + post, function(data) {
        var a = JSON.parse(data);
        console.log("comments=" + a.count);
        console.log("div_to_update=" + id_of_div_to_update);
    });
})();

是的,您可以在 AJAX 中添加一个回调函数,该函数在 get 请求成功或失败后执行。例如

$.ajax({
  url: url,
  data: data,
  success: function(response){
    console.log(response)
    // process  
  },
});

如果你的jQuery版本高于1.8,你应该使用"done","fail"和"always"回调。更多信息可以在 http://api.jquery.com/jQuery.get/找到。