Ajax的不断返回调用页
问题描述:
我有此AJAX请求正被称为: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文件(用于帖子控制器视图) 。被调用的函数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 DIV现有元素。问题是,ajax不断返回add.ctp文件(调用请求的文件)的全部内容。
什么可能是这个原因,我该如何解决?
编辑:解决
$这 - > Auth->允许(阵列( 'set_post_images'));没有设置,所以响应返回整个页面。在确定可以说出行动之后。
此外,在控制器中,可变不经由$ URL而是经由$这 - >数据[“URL”]访问。
快乐编码!
答
$这个 - > Auth- >允许(阵列( 'set_post_images'));没有设置,所以响应返回整个页面。在确定可以说出行动之后。
此外,在控制器中,可变不经由$ URL而是经由$这 - >数据[“URL”]访问。
快乐编码!
答
请插入set_post_images的返回ID为 '返回图像' 一个div然后改变你的Ajax代码这个
function submitData(inputstring){
$.ajax({
type: 'POST',
url: '/myWebsite/posts/set_post_images',
data: inputstring,
dataType: "text",
success:function(data){
var images = data.find('#returned-images');
var getResults=images.html();
$("#selectImage").html(getResults);
},
error:function(){
$('#selectImage').html("You failed misserably.");
},
timeout: 5000
});
}
干杯
答
请下面的代码尝试,
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');
}
exit;
}
使用浏览器的开发者工具来查看请求是什么样子。请求主体在这里似乎不重要,但URL可能很重要。我知道你已经在你的代码中设置了URL,但最好看看浏览器实际请求的位置。从那里,通过你的行动的逻辑。 isAjax()是真的吗?最近的Cake会有'$ this-> request-> is('ajax')'而不使用RequestHandler。最后,检查浏览器中的服务器响应。服务器是否返回整个'add.ctp'视图,还是你的'replaceWith'代码出错? –
你好本。该请求看起来还好我: '请求URL:http://本地主机/走投无路/职位/ set_post_images 请求方法:POST 状态代码:200 OK' 请求头中包含这一点,这似乎也没关系: ' Host:localhost Origin:http:// localhost Referer:http:// localhost/CheckMates/posts/add' 我不知道如何验证控制器操作本身,因为调试根本不显示任何内容(在这种情况下可能是正常的?)。 响应是整个add.ctp,浏览器开发工具显示它是这样的,如果我输出带有alert(data)的数据,它将显示整个代码... – Cos
哦,我用你的代码替换了RequestHandler在检查请求之前。 – Cos