2012-08-01 76 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代码结束。