호출 페이지를 반환 유지 :아약스 내가 호출되고이 아약스 요청을
$(document).ready(function(){
$('#PostTitle').change(function(){
var inputstring=$("#PostTitle").val();
submitData(inputstring);
});
});
function submitData(inputstring){
$.ajax({
type: 'POST',
url: '/myWebsite/posts/set_post_images',
data: inputstring,
dataType: "text",
success:function(data){
$("#selectImage").replaceWith($('#selectImage', $(data)));
},
error:function(){
$('#selectImage').html("You failed misserably.");
},
timeout: 5000
});
}
위의 코드는 add.ctp 파일에합니다 (게시물 컨트롤러에 대한보기) . 호출 된 함수 set_post_images는 게시물 컨트롤러 자체에 있으며 다음과 같습니다
public function set_post_images($url = null) {
if($url!=null){
$this->set('imageArray', $this->getImages($url));
} else {
$this->set('imageArray', array("/img/someImage.png"));
}
if ($this->RequestHandler->isAjax()) {
$this->autoRender = false;
$this->layout = 'ajax';
$this->render('/elements/selectImageElement');
}
return;
}
는 난 할 노력하고있어 새로운 요소로 대체 selectImage의 사업부에서 기존 요소를 얻는 것입니다. 문제는 아약스가 add.ctp 파일 (요청이 호출 된 파일)의 전체 내용을 계속 반환한다는 것입니다.
무엇이 문제의 원인 일 수 있으며 어떻게 해결할 수 있습니까? 가를 해결
$ this-> Auth-> 수 (('set_post_images'배열));
편집 응답이 전체 페이지를 반환 했으므로 설정되지 않았습니다. 조치를 취한 후에 고칠 수 있습니다.
또한 컨트롤러에서 변수는 $ url을 통해가 아니라 $ this-> data [ 'url']를 통해 액세스됩니다.
해피 코딩!
요청이 어떻게 생겼는지 확인하기 위해서는 브라우저의 개발자 도구를 사용합니다. 요청 본문은 여기서는 상관없는 것처럼 보이지만 URL이 중요 할 수 있습니다. 코드에서 URL을 설정했는데 브라우저가 실제로 요청한 부분을 확인하는 것이 가장 좋습니다. 거기에서 행동의 논리를 단계별로 실행하십시오. isAjax()가 true인가? 최근 Cake는 RequestHandler를 사용하지 않고'$ this-> request-> is ('ajax')와 같은 명령문을 갖게 될 것이다. 마지막으로 브라우저에서 서버 응답을 확인하십시오. 서버가'add.ctp' 뷰 전체를 반환하고 있습니까, 아니면'replaceWith' 코드가 실수입니까? –
안녕 벤. 이 요청은 나에게 좋아 보이는 : '요청 URL : HTTP : // localhost를/CheckMates/글/set_post_images 신청 방법 : POST 상태 코드 : 200 OK' 요청 헤더도 좋아 보이는이 포함되어 있습니다 : ' 호스트 : localhost 출처 : http : // localhost Referer : http : // localhost/CheckMates/posts/add' 디버깅이 전혀 표시되지 않기 때문에 컨트롤러 동작 자체를 확인하는 방법을 모르겠습니다. (이 경우 정상 일 수 있습니까?). 응답은 전체 add.ctp입니다. 브라우저의 dev 도구는이를 보여 주며, 경고 (데이터)로 데이터를 출력하면 전체 코드를 표시합니다. – Cos
아, 또한 코드로 RequestHandler를 대체했습니다. 요청을 확인하기 전에 – Cos