我正在向我的控制器发出ajax请求。这里是我的代码:CakePHP 3和jQuery 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);
}
});
MyController.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);
}
}
}
的问题是,这并没有返回一个字符串,而是返回一个错误页面。如果我查看错误页面,错误是:
Missing Template:Error:未找到OrganizationsController :: add()的视图。
虽然确实没有add.ctp文件,但它不应该试图找到要返回的视图,因为我只希望它返回单个字符串。我错过了某个地方的设置吗?
谢谢
要么使用[阿贾克斯(HTTPS ://github.com/dereuromark/cakephp-ajax)插件,或者按照关于如何通过_serialize和JsonView提供浏览的文档。 – mark