2009-07-25 3 views
1

у меня есть массив объектов, я хочу, чтобы сохранить каждый из них через GET и обновление некоторых Params в обратный вызов, ботJQuery функция Ajax обратного вызова без динамических параметров

HTML-:

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

в ЯШ:

$.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 всегда получать деталь! лас Как передать правильный id или объект функции обратного вызова в js/jquery?

ответ

2

Решение настолько грустно земное: вам нужно добавить 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); 

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

+0

ОК, я тестировал это решение, и это, безусловно, так. большое спасибо, Javascript Lord u.u – dnuske

+0

np, рад, что я мог бы помочь. –

Смежные вопросы