我有此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」]訪問。
快樂編碼!
使用瀏覽器的開發者工具來查看請求是什麼樣子。請求主體在這裏似乎不重要,但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