Что я делаю:
у меня есть страница поиска пользователей, когда тыкаю на какого-то пользователя, то показываю инфу о нем
if($(document).find('.usersforu').length>0){ // проверка ну существование юзеров
getUserInfo_var = false, // false
complaint_var = false; // false
$(document).on('click', '.usersforu', function(){ // при клике на юзера
var username = $(this).find('.ufuName').text(); // создадим переменную с его именем
getUserInfo(username); // вызываем функцию с поиском информации о выбраним юзере, отправляем в php
}
То есть я кликнул на юзера, создал переменную с его именем и отправляю данные на php
function getUserInfo(username){ // сама ф-ия
if(getUserInfo_var) return false; // если не false, то ничего не делаем
$.ajax({ // запуск ajax
url: '/theme/userMore/userMore.php', // путь до php
type: 'post', //post
dataType: 'json', //json
data: {username:username}, //data с именем искомого юзера из переменной username, создаваемой при клике на юзера
success: function(json){ //при успехе
if(typeof json.success !== 'undefined'){ // если из php пришло echo json_encode(['success' => '...'],
$(document).find('.innerTwo').empty(); // очистим div, в которой подгружаем инфу о юзере
$(document).find('.innerTwo').html(json.success); // вставим эту инфу
compl(); // вызов ф-ии жалобы на юзера
} else if(typeof json.error !== 'undefined'){
return $.jGrowl(json.error); // а так будем получать ответы с ошибками echo json_encode(['error' => '...'],
}
},
error: function(json, jqXHR, status, errorThrown, exception){
alert(JSON.stringify(json));
return $.jGrowl('ОШИБКА AJAX запроса: ' + status, jqXHR, json);
}
});
}
Теперь php подгрузил инфу о выбранном юзере в div, в этом div есть кнопка "пожаловаться на пользователя", функцию для этой кнопки
compl() вызывали в
success getUserInfo();
//жалоба на пользователя
function compl(){ // сама ф-ия
if($(document).find('#complaint').length>0){
usernameTocomplaint = $(document).find('.tuName').text(); //найдем имя пользователя из div, подгруженного первым ajax
$(document).on('click', '#complaint', function(){ // при клике на кнопку "жалоба"
$('#complaintForm').find('input[name="usernameTocomplaint"]').val(usernameTocomplaint); // в скрытый инпут формы вставим имя пользователя для отправки админу
$('#complaintForm').arcticmodal(); // вызовем модальное окно
alert($(document).find('#complaintForm').length); // вот тут интересное начиание проблемы, ниже об этом
});
}
if($(document).find('#complaintBtn').length>0){
$(document).on('click', '#complaintBtn', function(){ // при клике на кнопку "отправить жалобу"
complaintFunc(usernameTocomplaint); //вызовем ф-ию
});
}
}
//жалоба на юзера и его блокировка юзером
function complaintFunc(usernameTocomplaint){ //сама ф-ия
if(complaint_var) return false;
$.ajax({
url: '/theme/complaint/complaint.php',
type: 'post',
dataType: 'json',
data: $('form[name="complaint"]').serialize(), // сериализуем поля формы, их два (скрытое поле с ником юзера на которого жалуются и textarea с причиной жалобы)
success: function(json){
if(typeof json.success !== 'undefined'){ // если успех
complUserHide(); // то вызовем ф-ия, которая спрячет юзера, на которого пожаловались на странице, типа $('#user').hide();
$.jGrowl(json.success);
} else if(typeof json.error !== 'undefined'){
$.jGrowl(json.error);
}
},
error: function(json, jqXHR, status, errorThrown, exception){
alert(JSON.stringify(json));
return $.jGrowl('ОШИБКА AJAX запроса: ' + status, jqXHR, json);
}
});
}
Проблема в следующем, я при тестах php увидел что любое сообщение об ошибке/успехе появляется несколько раз, затем я вверху php написал
exit();, далее пошел в
jquery и тут обнаружил следующее:
Я тыкнул на юзера, все ок, далее тыкаю "пожаловаться", и при клике на "пожаловаться", сделал
alert('кол-во форм пожаловаться на юзера');. Alert всегда показывает 1. НО. Alert будет показываться ровно столько раз сколько ты кликнул на юзера, не важно на одного и того же или разных.
Тыкаешь на юзера->тыкаешь пожаловаться->alert 1 раз,
Тыкаешь на юзера другого или этого же 2-ой раз->тыкаешь пожаловаться->alert 2 раза,
Тыкаешь на юзера другого или этого же 3-ой раз->тыкаешь пожаловаться->alert 3 раза,
и до бесконечности
Подскажите где я ошибаюсь?