0

假设我这样做:

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

3 回答 3

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);
}
于 2013-10-23T09:59:28.560 回答
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);
    });
})();
于 2013-10-23T10:03:29.750 回答
0

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

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

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

于 2013-10-23T10:02:23.033 回答