
02.03.2016, 15:20
|
Аспирант
|
|
Регистрация: 04.11.2013
Сообщений: 40
|
|
Конфликтуют 2 AJAX скрипта
По какой-то причине, когда кликаешь по #changepwd, то в #changepwd-box записывается результат сразу двух скриптов: changepwd и #last-activity-button
Как пофиксить?
$(function(){
$('#last-activity-button').click(function(){
var view = 'act=last_activity&user_id=<?php echo $_COOKIE['user_id']; ?>&token=<?php echo $token; ?>&hash=<?php echo $hash; ?>'; //
$.ajax({
type : "POST",
url : "ajax.php",
data: view,
success:function(view){
$('#results').empty().append(view);
},
error: function(){
$('#results').empty().text(view);
}
});
});
});
$(function(){
$('#changepwd').click(function(){
var old_pwd = $("#settings_old_pwd");
var new_pwd = $("#settings_new_pwd");
var confirm_pwd = $("#settings_confirm_pwd");
var changepwd = 'act=changepwd&user_id=<?php echo $_COOKIE['user_id']; ?>&old_pwd='+ old_pwd.val() +'&new_pwd='+ new_pwd.val() +'&confirm_pwd='+ confirm_pwd.val() +'&token=<?php echo $token; ?>&hash=<?php echo $hash; ?>'; //
$.ajax({
type : "POST",
url : "ajax.php",
data: changepwd,
success:function(msg){
$('#changepwd-box').text(msg);
},
error: function(){
$('#changepwd-box').text(msg);
}
});
});
});
|
|

02.03.2016, 16:17
|
 |
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
grisha2217,
Может потому что один из них вложен в другой и происходит всплытие события?
|
|

02.03.2016, 16:29
|
Аспирант
|
|
Регистрация: 04.11.2013
Сообщений: 40
|
|
Сообщение от destus
|
grisha2217,
Может потому что один из них вложен в другой и происходит всплытие события?
|
Подскажите, мне пожалуйста, где происходит вложение? Если действие наложено на разные иденфикаторы
|
|

02.03.2016, 16:32
|
 |
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
|
|

02.03.2016, 21:45
|
Аспирант
|
|
Регистрация: 04.11.2013
Сообщений: 40
|
|
destus, ааа, что я делаю не так?
$(document).ready(function () {
$('#last-activity-button').click(function() {
var view = 'act=last_activity&user_id=<?php echo $_COOKIE['user_id']; ?>&token=<?php echo $token; ?>&hash=<?php echo $hash; ?>'; //
$.ajax({
type: "POST",
url: "ajax.php",
data: view,
success: function (view) {
$('#results').empty().append(view);
view.preventDefault();
},
error: function (view) {
$('#results').empty().text(view);
view.preventDefault();
}
});
});
});
$(document).ready(function () {
$('#changepwd').click(function () {
var old_pwd = $("#settings_old_pwd");
var new_pwd = $("#settings_new_pwd");
var confirm_pwd = $("#settings_confirm_pwd");
var changepwd = 'act=changepwd&user_id=<?php echo $_COOKIE['user_id']; ?>&old_pwd=' + old_pwd.val() + '&new_pwd=' + new_pwd.val() + '&confirm_pwd=' + confirm_pwd.val() + '&token=<?php echo $token; ?>&hash=<?php echo $hash; ?>'; //
$.ajax({
type: "POST",
url: "ajax.php",
data: changepwd,
success: function (msg) {
$('#changepwd-box').text(msg);
msg.preventDefault();
},
error: function (msg) {
$(this).parent().prev().text(msg);
msg.preventDefault();
}
});
});
});
Как я понял, нужно использовать GET для вывода информации в сгенерированное окно:
<a href="ajax.html" id="manual-ajax">second example</a>
// Open modal in AJAX callback
$('#manual-ajax').click(function(event) {
event.preventDefault();
$.get(this.href, function(html) {
$(html).appendTo('body').modal();
});
});
Но это не удобно, как можно решить проблему не меняя схему работы скрипта?
Последний раз редактировалось grisha2217, 02.03.2016 в 21:55.
|
|

02.03.2016, 22:06
|
 |
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
grisha2217,
HTML разметку надо, где есть элементы с id = last-activity-button и id = changepwd. Да и $.get смысла нет использовать, если можно прописать type в $.ajax.
$.ajax({
type : 'GET',
...
})
|
|

02.03.2016, 22:32
|
Аспирант
|
|
Регистрация: 04.11.2013
Сообщений: 40
|
|
Сообщение от destus
|
grisha2217,
HTML разметку надо, где есть элементы с id = last-activity-button и id = changepwd. Да и $.get смысла нет использовать, если можно прописать type в $.ajax.
$.ajax({
type : 'GET',
...
})
|
Держи:
<ul class="tab-post-container text" >
<li class="settings_section">
<h2>Смена пароля</h2>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Старый пароль:</div>
<div class="fl_l"><input type="password" id="settings_old_pwd"></div>
</div>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Новый пароль:</div>
<div class="fl_l"><input type="password" id="settings_new_pwd"></div>
</div>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Повторите пароль:</div>
<div class="fl_l"><input type="password" id="settings_confirm_pwd"></div>
</div>
<div class="settings_row_wrap">
<div id="changepwd-box" class="fl_l ta_r settings_label"></div>
<div class="fl_l"><span id="changepwd" class="button primary">Изменить пароль</span>
</div>
</div>
</li>
<li class="settings_section">
<h2>Последняя активность</h2>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Последний онлайн:</div>
<div id="last-activity-time" class="fl_l"><? echo $last_activity;?></div>
</div>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">История активности:</div>
<a href="#more" rel="modal:open" id="last-activity-button" class="fl_l button button--chromeless">Показать</a>
<div id="more" class="modal" style="display:none">
<span id="modal-title">История активности вашего аккаунта</span>
<div class="more">
<div id="title-table"><span>Браузер</span>
<span>Платформа</span>
<span>IP-адрес</span>
<span>Время</span></div>
<div id="results"></div>
</div>
</div>
</div>
</li>
</ul >
После html кода идут скрипты.
|
|

03.03.2016, 07:52
|
 |
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
grisha2217,
В исходном коде ошибка с кавычками. Для #last-activity-button в 3 строке и для #changepwd в 6. Запустил у себя на локальном сервере, никаких конфликтов собственно не заметил.
<ul class="tab-post-container text">
<li class="settings_section">
<h2>Смена пароля</h2>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Старый пароль:</div>
<div class="fl_l"><input type="password" id="settings_old_pwd"></div>
</div>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Новый пароль:</div>
<div class="fl_l"><input type="password" id="settings_new_pwd"></div>
</div>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Повторите пароль:</div>
<div class="fl_l"><input type="password" id="settings_confirm_pwd"></div>
</div>
<div class="settings_row_wrap">
<div id="changepwd-box" class="fl_l ta_r settings_label"></div>
<div class="fl_l">
<span id="changepwd" class="button primary">Изменить пароль</span>
</div>
</div>
</li>
<li class="settings_section">
<h2>Последняя активность</h2>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">Последний онлайн:</div>
<div id="last-activity-time" class="fl_l"><? echo $last_activity;?></div>
</div>
<div class="settings_row_wrap">
<div class="fl_l ta_r settings_label">История активности:</div>
<a href="#more" rel="modal:open" id="last-activity-button" class="fl_l button button--chromeless">Показать</a>
<div id="more" class="modal" style="display:none">
<span id="modal-title">История активности вашего аккаунта</span>
<div class="more">
<div id="title-table">
<span>Браузер</span>
<span>Платформа</span>
<span>IP-адрес</span>
<span>Время</span>
</div>
<div id="results"></div>
</div>
</div>
</div>
</li>
</ul>
<script>
$(function(){
$('#last-activity-button').click(function (e) {
e.stopPropagation();
e.preventDefault();
var view = 'act=last_activity&user_id=<?php echo $_COOKIE["user_id"]; ?>&token=<?php echo $token; ?>&hash=<?php echo $hash; ?>'; //
$.ajax({
type : "POST",
url : "ajax.php",
data: view,
success: function (view) {
alert('hello from last-activity');
$('#results').empty().append(view);
},
error: function(){
$('#results').empty().text(view);
}
});
});
$('#changepwd').click(function (e) {
e.stopPropagation();
e.preventDefault();
var old_pwd = $("#settings_old_pwd");
var new_pwd = $("#settings_new_pwd");
var confirm_pwd = $("#settings_confirm_pwd");
var changepwd = 'act=changepwd&user_id=<?php echo $_COOKIE["user_id"]; ?>&old_pwd='+ old_pwd.val() +'&new_pwd='+ new_pwd.val() +'&confirm_pwd='+ confirm_pwd.val() +'&token=<?php echo $token; ?>&hash=<?php echo $hash; ?>'; //
$.ajax({
type : "POST",
url : "ajax.php",
data: changepwd,
success: function (msg) {
alert('hello from change-pwd');
$('#changepwd-box').text(msg);
},
error: function(){
$('#changepwd-box').text(msg);
}
});
});
});
</script>
|
|

04.03.2016, 23:00
|
Аспирант
|
|
Регистрация: 04.11.2013
Сообщений: 40
|
|
destus, у меня опять срабатывает)
Когда я меняю act=last_activity, то в попап окне парсинг не происходит, а в блок #changepwd-box всё равно выводится результат функции смена пароля + результат функции last-activity, при этом подается неизвестное серверу значение 'act'. Будем копать.
== upd, я идиот.
В пхп файле было условие с одним знаком "равно" вместо двух(((
if ($_POST['act'] = 'last_activity') {
Последний раз редактировалось grisha2217, 04.03.2016 в 23:05.
|
|
|
|