Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Отправка формы через ajax, не могу найти ошибку (https://javascript.ru/forum/jquery/56064-otpravka-formy-cherez-ajax-ne-mogu-najjti-oshibku.html)

LAOS 28.05.2015 09:56

Отправка формы через ajax, не могу найти ошибку
 
Доброго времени суток. Ну судите за быдлокодниг - всего пару дней как начал работать с jquery. И так, есть таблица с ячейками class="cell" и есть код:
<script type="text/javascript">

$(document).ready(function(){
$(".cell").click(function(){
var edt = $(this);
var edth =$(this).html();
var list = $(this).find('textarea');
if (list.length == 0) {
var nid =$(this).attr("id")

$(this).html('<form id="form'+ nid +'"><input type="hidden" name="celladdr" value="' + nid + '"> <textarea name="f'+ nid +'"cols=25 row="4">' + edth + '</textarea></form><img class="sb" src="save.png">')
$('.sb').on('click', function(){
var save = $(this).parent().html();

var msg = $('#form'+nid).serialize();
$.ajax({
type: 'POST',
url: 'mod.php',
data: msg,
success: function(data) {
alert(data);
$(edt).html(data);
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}
});

});

}
});

</script>
Собственно алгоритм такой, при клике по ячейке, в ячейке появляется textarea в который уже вбито значение ячейки и кнопка для сохранения - изображение class="sb". По клику на class="sb" происходит отправка формы из ячейки с помощью ajax. Всё работает. Но есть одно хреновое НО. При кликах поочерёдно по нескольким ячейкам, и после этого при нажатии кнопки сохранения происходит отправка всех редактируемых ячеек, хотя они находятся в разных формах. А нужно отправлять по одной. Помогите, а то к концу недели забухаю от безисходности.))

laimas 28.05.2015 10:13

Код нужно форматировать, читать его неудобно.

А зачем в каждую ячейку по собственной форме для одного поля? Может быть форма все-таки одна, а поля в нее добавляются?

LAOS 28.05.2015 10:39

Задача -изменять только одну ячейку, без изменения всей строки. А форматирование форум съел.
Собственно, проблема в том, что при одновременном редактировании нескольких ячеек и нажатии кнопки сохранения в любой из них, начинают последовательно отравляться все формы из редактируемых ячеек причём в каком-то диком порядке

laimas 28.05.2015 12:08

Цитата:

Сообщение от LAOS
проблема в том, что при одновременном редактировании нескольких ячеек и нажатии кнопки сохранения в любой из них, начинают последовательно отравляться все формы

Так я о чем и говорю, нахрена куча форм, да которые еще по щелчку отправляются?

рони 28.05.2015 12:30

Цитата:

Сообщение от LAOS
А форматирование форум съел.

ой
<script type="text/javascript">

 $(document).ready(function(){
 $(".cell").click(function(){
 var edt = $(this);
 var edth =$(this).html();
 var list = $(this).find('textarea');
 if (list.length == 0) {
 var nid =$(this).attr("id")

 $(this).html('<form id="form'+ nid +'"><input type="hidden" name="celladdr" value="' + nid + '"> <textarea name="f'+ nid +'"cols=25 row="4">' + edth + '</textarea></form><img class="sb" src="save.png">')
 $('.sb').on('click', function(){
 var save = $(this).parent().html();

 var msg = $('#form'+nid).serialize();
 $.ajax({
 type: 'POST',
 url: 'mod.php',
 data: msg,
 success: function(data) {
 alert(data);
 $(edt).html(data);
 },
 error: function(xhr, str){
 alert('Возникла ошибка: ' + xhr.responseCode);
 }
 });

 });

 }
 });

 </script>

рони 28.05.2015 12:33

LAOS,
прокол в строке 12
$('.sb', this).on('click',
добавьте красное иначе при каждом клике вы умножаите прежние клики


Часовой пояс GMT +3, время: 18:20.