2012-11-08 86 views
0

我有此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」]訪問。

快樂編碼!

+0

使用瀏覽器的開發者工具來查看請求是什麼樣子。請求主體在這裏似乎不重要,但URL可能很重要。我知道你已經在你的代碼中設置了URL,但最好看看瀏覽器實際請求的位置。從那裏,通過你的行動的邏輯。 isAjax()是真的嗎?最近的Cake會有'$ this-> request-> is('ajax')'而不使用RequestHandler。最後,檢查瀏覽器中的服務器響應。服務器是否返回整個'add.ctp'視圖,還是你的'replaceWith'代碼出錯? –

+0

你好本。該請求看起來還好我: '請求URL:http://本地主機/走投無路/職位/ set_post_images 請求方法:POST 狀態代碼:200 OK' 請求頭中包含這一點,這似乎也沒關係: ' Host:localhost Origin:http:// localhost Referer:http:// localhost/CheckMates/posts/add' 我不知道如何驗證控制器操作本身,因爲調試根本不顯示任何內容(在這種情況下可能是正常的?)。 響應是整個add.ctp,瀏覽器開發工具顯示它是這樣的,如果我輸出帶有alert(data)的數據,它將顯示整個代碼... – Cos

+0

哦,我用你的代碼替換了RequestHandler在檢查請求之前。 – Cos

回答

1

$這個 - > Auth- >允許(陣列( 'set_post_images'));沒有設置,所以響應返回整個頁面。在確定可以說出行動之後。

此外,在控制器中,可變不經由$ URL而是經由$這 - >數據[「URL」]訪問。

快樂編碼!

-1

請插入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 
}); 

}

乾杯

0

請下面的代碼嘗試,

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; 
}