我有这个 ajax 请求,每当我更改输入字段时都会调用它:
$(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 文件(Posts 控制器的视图)中。调用的函数 set_post_images 位于 Posts Controller 本身中,如下所示:
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 div 中获取现有元素,替换为新元素。问题是,ajax 不断返回 add.ctp 文件(调用请求的文件)的全部内容。
这可能是什么原因,我该如何解决?
编辑:已解决
$this->Auth->allow(array('set_post_images')); 没有设置,所以响应返回整个页面。修复后,可以对动作说话。
此外,在控制器中,变量不是通过 $url 而是通过 $this->data['url'] 访问的。
快乐编码!