我正在尝试在CakePHP 2.3中运行ajax请求。我正在处理这篇文章: simple ajax example with cakephp 2.3.0
我无法让它工作,这是我的代码:
$("#node-form-save").click(function(){
event.preventDefault();
var firstName = $("#node-form-first-name").val();
var lastName = $("#node-form-last-name").val();
var dob = $("#node-form-dob").val();
$.ajax({
url:'/persons/create',
type: 'GET',
datatype: 'json',
data: {firstName: firstName, lastname: lastName, dob:dob},
success: function(data){
alert("succes");
}
});
$('#modal-pop').jqmHide();
})
我从一个简单的测试开始,看看是否达到了成功功能,但我没有得到警告。我的代码出了什么问题?网址是正确的。网址/人工作,当我输入/ persons / create时,我得到一个CakePHP屏幕,说我没有视图(但我不想要一个,我正在做ajax。 我列出了我的控制器(PersonsController.php)
class PersonsController extends AppController
{
public $helpers = array('html', 'form');
public function index()
{
}
public function create()
{
}
}
我暂时将这些功能留空了,这样我就可以使基本功能正常工作了。
答案 0 :(得分:1)
第一:为什么“得到”?似乎uber不安全的创建功能。通过POST进行ajax调用。
你说你不想要一个视图,但你的代码无处可指定。对于ajax,并避免渲染视图和布局,请执行此操作
public function create() {
$this->autoRender = false;
}
此外,如果你这样做,你将得不到任何回报,所以在动作中,你需要回显值,以便ajax可以接收它。
还有一个提示,你可以用ajax和普通的方式将你要执行的功能分开来进行简单的检查
public function create() {
if( $this->request->is('ajax') ) {
$this->autoRender = false;
echo 'hello result';
return;
}
//else, handle this action as a normal one and render a view and whatever
}
答案 1 :(得分:0)
您需要将“事件”传递给函数:
$("#node-form-save").click(function(event){
event.preventDefault();
...
}
答案 2 :(得分:0)
这就是我如何做到这一点。它帮助
$(document).ready(function() {
$(".submit").click(function(event){//my submit button has class name 'submit'
event.preventDefault();
$.ajax({
type:"POST",
url:"/cakephp/messages/create/",
success : function(data) {
alert('success');
}
});
});
});
<强>控制器强>
public function create(){
if( $this->request->is('ajax') ) {
$this->autoRender = false;
echo 'hello result';
return;
}
}