2011-04-12 59 views
8

在我看來,我有一個Ajax調用:笨/ jQuery的 - Ajax調用返回完整的HTML頁面,而不是我的回聲

$(".previous").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "planner/get_cal", 
      data: {current_month: current_month}, 
      success: function(msg){ 
       alert(msg); 
      } 

     }); 

的get_cal功能在我的規劃控制:

function get_cal() 
{ 
    echo "dinosaurs"; 
} 

然而,它不是返回「恐龍」,而是返回完整的HTML頁面。我無法弄清楚爲什麼。思考?非常感謝。

+0

你有一個佈局綁定到你的控制器,會渲染它嗎? – mikelbring 2011-04-12 15:20:56

+0

當你從瀏覽器手動嘗試時,你會得到什麼? – Vamsi 2011-04-12 15:35:23

+0

@krishna,手動進入get_cal頁面,如預期的那樣,手動讓我有一個「恐龍」的空白頁面。 – cabaret 2011-04-12 15:37:23

回答

10

我解決了這個問題,在我的問題的評論中建議使用一個前導斜槓。

$.ajax({ 
    type: "POST", 
    url: "/planner/get_cal", 
    dataType: "text", 
    data: {current_month: current_month}, 
    success: function(msg){ 
    alert(msg); 
    } 
});   
0

嘗試將數據類型爲「文本」


$.ajax({ 
    type: "POST", 
    url: "planner/get_cal", 
    data: {current_month: current_month}, 
    dataType: "text", 
    success: function(msg){ 
     alert(msg); 
    } 
}); 
0

使用的Controler的笨結構/方法URI段我發現它更容易使用../../controller/method作爲我URL在jquery ajax請求中。我還建議指定一個數據類型,以便將字符串解析並作爲對象返回。

這裏是一個例子;


$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "../../controller/method", 
    success: mySuccessFunction 
}); 
0

對於任何正在使用Zend框架,我經歷了AJAX響應,而不是返回json_encode()響應的全功能HTML相同的問題。這是通過添加以下到我的控制器解決:

if ($this->getRequest()->isXmlHttpRequest()) 
    { 
     $this->_helper->layout()->disableLayout(); 
     $this->_helper->viewRenderer->setNoRender(true); 
    } 
0

這些類型的問題來當你的PHP文件,HTML文件不正確的路徑上,使Apache服務器可以解析PHP文件。 沒有提及類型:'文本'和任何其他格式也,阿賈克斯將工作。 但請確保您的服務器已達到php文件。否則整個文件將被視爲文本並返回。

3

您還可以通過在你的PHP文件呼應像下面後加入出口得到它:

function get_cal() 
{ 
    echo "dinosaurs";exit; 
} 

它將工作。 :)

0

只想提及: 該網址將取決於你如何擁有.htaccess和文件夾結構設置。 所以最好的方法是嘗試多個URL,即:
../../controller/method
../controller/method
server_folder/index.php文件/控制器/方法
http://example.com/server_folder/index.php/controller/method
然後選擇在特定情況下效果最好的那個。

相關問題