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

时间:2013-10-23 09:54:51

标签: javascript jquery

假设我这样做:

$.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);
});

3 个答案:

答案 0 :(得分:2)

首先,您可以将数据作为更清晰,可读的对象传递,而不是将其传递到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);
}

答案 1 :(得分:1)

通常没有必要这样,因为你的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);
    });
})();

答案 2 :(得分:0)

是的,您可以在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/找到。