Функция обратного вызова jquery ajax без динамических параметров - PullRequest
1 голос
/ 26 июля 2009

У меня есть массив с объектами, я хочу сохранить каждый из них через GET и обновить определенные параметры в обратном вызове, бот

html:

<html><body><div id='test'><div id="a">a</div><div id="b">b</div></div></body></html>

js:

$.map($("#test > div"), save)

save = function(o,i){
 itt = $(o)
 tmp = {'desc':itt.html()};
 $.get('ajax/update_post', {'data':array2json(tmp)}, function(a){ 
   alert(itt.attr('id'))
   updatePostBack(a,itt)
   })
 }

updatePostBack = function(a,item){
 alert(item.attr('id'))
}

updatePostBack всегда получает элемент las! Как я могу передать правильный идентификатор или объект для функции обратного вызова в JS / JQuery?

1 Ответ

2 голосов
/ 26 июля 2009

Решение очень печальное: вам нужно было добавить var перед вашими переменными, чтобы объявить их новыми. На следующей итерации они неуместно перезаписывались до завершения первой. Этот код работает для меня:

save = function(o,i){
    var itt = $(o)
    var tmp = {'desc':itt.html()};
    $.get('ajax/update_post', {'data':array2json(tmp)}, function(a){
        alert(itt.attr('id'))
        updatePostBack(a,itt)
    })
}

updatePostBack = function(a,item){
    alert(item.attr('id'))
}

$.map($("#test > div"), save);

Я также переместил оператор map в конец, чтобы он вызывал функцию сохранения после , когда он был объявлен.

...