我在向我的控制器发出 ajax 请求时遇到问题。这是我的代码:
$.ajax({
type:"POST",
async: true,
cache: false,
url:"<?php echo \Cake\Routing\Router::url(array('controller'=>'Organizations','action'=>'add', 'ext' => 'json'));?>",
beforeSend: function(xhr) {
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
},
success: function(tab){
$( "#users acronymTable" ).append( "<tr>" +
"<td>" + acronym.val() + "</td>" +
"<td>" + definition.val() + "</td>" +
"</tr>" );
},
error: function (tab) {
alert('error' + tab.statusText);
}
});
我的控制器.php:
class OrganizationsController extends AppController
{
public function initialize(){
parent::initialize();
$this->loadComponent('RequestHandler');
}
public function add()
{
$this->layout = null;
if ($this->request->is('post')) {
// result can be anything coming from $this->data
$result = 'Hello Dolly!';
$this->set("result", $result);
}
}
}
问题是这不返回字符串而是返回错误页面。如果我查看错误页面,错误是:
缺少模板:错误:未找到 OrganizationsController::add() 的视图。
虽然确实没有 add.ctp 文件,但它不应该试图找到要返回的视图,因为我只希望它返回单个字符串。我错过了某个地方的设置吗?
谢谢
您需要有一个视图,应该将 $result 发送到。如果你不想要一个视图关闭自动渲染$this->autoRender = false;
,否则创建一个 add.ctp 或声明一个不同的视图$this->render('other_view');
正如 ndm 所指出的
始终呈现模板、使用序列化数据视图或准备并返回响应对象
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句