У меня появилось модальное диалоговое окно, которое позволяет пользователям изменять свои пароли после выполнения определенного условия.Возврат только тела с помощью запроса CakePHP Ajax
Это прекрасно работает, однако, когда запрос завершен, он возвращает всю страницу, включая шаблон.
Я запускаю сценарий в своем макете по умолчанию (APP/View/Layout/default.ctp
), потому что он должен быть на каждой странице, поскольку пользователь вошел в систему и затем перенаправлен на запрошенную страницу.
Я хочу знать, как я могу показать только содержимое запрашиваемой страницы, а не шаблон?
Вот мой JQuery скрипт:
//In the default layout
$(document).ready(function(e) {
var $dialog = $("#view_dialog").dialog(
{
autoOpen: false,
closeOnEscape: false,
closeText: 'hide',
draggable: false,
modal: true,
resizable: false,
hide:"fade",
title: 'Password Change Required',
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); },
buttons: {
"Change Now": function() {
if($('#password').val() != "" && $('#confirm').val() != "") {
if($('#password').val() == $('#confirm').val()) {
$.ajax({
type: 'GET',
url: 'pages/password_change',
data: { password:$('#password').val(), usern : $('#usern').val() },
success: function(data) {
if(data.indexOf("SUCCESS") != -1) {
data = data.replace("SUCCESS", "");
$('#passAlert').removeClass('ui-state-error').addClass('ui-state-highlight').html(data).show('fast');
setTimeout(function() { $(this).dialog('close'); },1000);
} else {
data = data.replace("FAIL", "");
$('#passAlert').html(data).show('fast');
}
},
error: function(xhr,ajaxOptions,thrownError) {
data = data.replace("FAIL", xhr.status + ' - ' + thrownError);
$('#passAlert').html(data).show('fast');
}
});
} else {
$('#passAlert').html("Password doesn't match.").show('fast');
}
} else
$('#passAlert').html("Please complete all boxes.").show('fast');
}
}
});
if(<?php echo $showPopup ?>) {
$dialog.dialog("open");
}
На данный момент я просто повторив одно предложение, чтобы проверить реакцию.
Я читал, что много, но в какой контроллер я поставил это (учитывая, что я запускаю это из скрипта в каталоге страниц. ld Я изменяю свою структуру, поэтому у меня есть функция changePassword в моем контроллере пользователей, и она просто вызывает это при отправке? Как я могу это сделать? – Albert
@DarkRanger измените его в файле управления паролем контроллера ... и увидите магию –
Нет. Контроллер страниц - это стандартный контроллер, который поставляется с cakePHP. Когда я добавляю это действие к контроллеру, ничего не происходит. – Albert