Передача информации в функцию обработки ответов jQuery ajax

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);
});
  • 1
    id_of_div_to_update - это идентификатор атрибута html элемента DOM? Я имею в виду не значение с сервера?
  • 0
    вы можете сделать как var callback = (function( id ){ return function( data ){ // here u get id and data };})( id_of_div_to_update);
Теги:

3 ответа

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

ну сначала вы можете передать данные как объект, который более понятен и читабельен, вместо того, чтобы передавать его в url.. используйте getJOSN, чтобы получить ответ как json, который включает в себя id div, который вам нужно обновить

$.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 для обновления, вы можете установить его в переменную и использовать его позже

 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);
}
  • 0
    Я хочу избежать передачи строк, о которых серверу не нужно знать, в сервер и обратно с сервера
  • 0
    Вы, возможно, неправильно поняли мой вопрос, извините. Я обновил его, чтобы немного лучше понять, что я имел в виду. Другой парень ответил правильно первым. Спасибо хоть!
Показать ещё 1 комментарий
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/.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню