2012-08-01 74 views
0

我正在使用cakephp。我有一個ajax請求是拉一個PHP文件來顯示。
我遇到的問題是被拉的php文件需要在拉動之前執行php代碼。它是創建表單的cakephp代碼。目前,php文件正在被顯示,因爲它在文件中而不是html,如果我直接通過瀏覽器查看它,它將被改變。ajax拉一個php文件

我不知道如何克服這一點。有任何想法嗎?
非常感謝

CODE
jQuery的 -

var request = $.ajax({ 
     url: "/files/Users/"+name+".ctp", 
     type: "GET", 
     dataType: "html", 
     error: function(jqXHR, textStatus) { 
      $('#pageLoading p').html('We have experienced a problem. Please try again later.'); 
      return false; 
     }, 
     success: function(msg) { 
      sortData(msg); 
     } 

php文件的部分(實際上是一個.ctp文件,但它有它.PHP代碼) -

<?php 
echo $this->Form->create(); 
$options = array(
'label' => ' ', 
'id' => 'formSubmit', 
'class' => 'userSubmit', 
'div' => FALSE 
); 
echo $this->Form->end($options); 
?> 

隨着cakephp這個php顯示爲html,但是當我用ajax抓住並在屏幕上打印它時,它顯示爲如圖所示。

回答

1

你的基本想法似乎是錯誤的:不要直接獲取.ctp文件,而是堅持控制器/視圖的想法。
因此,而不是在你的Users控制器創建一個控制器方法

public function show_form($name){ 
} 

請確保您有準備包含表單代碼匹配的視圖文件。例如。 View/Users/show_form.ctp

下一步:確保您的腳本調用:http://example.com/users/show_form/the_name

1

url: "/files/Users/"+name+".ctp",

對我來說看上去不對。

您需要傳入controller/action以便Cake執行並正確解析視圖文件。

另外$this->layout = 'ajax';可能會得心應手;所以你不會以響應中的「主」佈局HTML代碼結束。