1
특정 조건이 충족되면 사용자에게 암호를 변경하도록 요청하는 모달 대화 상자가 나타납니다.CakePHP Ajax 요청이있는 본문 만 반환합니다.
그러나 완벽하게 작동하지만 요청이 완료되면 템플릿을 포함한 전체 페이지를 반환합니다.
사용자가 로그인하여 요청한 페이지로 리디렉션되기 때문에 모든 페이지에 있어야하므로 기본 레이아웃 (APP/View/Layout/default.ctp
)으로 스크립트를 실행합니다.
알고 싶습니다. 템플릿이 아닌 요청한 페이지의 내용 만 표시하려면 어떻게해야합니까? 순간
//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");
}
난 그냥 응답을 확인하는 하나의 문장을 울리는 해요 :
여기 내 JQuery와 스크립트입니다.
그 많은 읽을 수 있지만 어떤 컨트롤러에 내가 배치해야합니까 이것은 (내가 페이지 디렉토리의 스크립트에서 이것을 실행하고 있음을 고려하여). ld 나는 내 사용자 컨트롤러에서 changePassword 함수를 갖기 위해 구조를 변경하고 제출할 때이를 호출합니다. 나는 어떻게 그것에 대해 갈 것인가? – Albert
@DarkRanger가 페이지 컨트롤러의 password_change 액션을 변경하고 마법을 봅니다. –
아니요. 페이지 컨트롤러는 cakePHP와 함께 제공되는 표준 컨트롤러입니다. 컨트롤러에 해당 동작을 추가하면 아무 일도 일어나지 않습니다. – Albert