这个问题来自问题,无法让Ajax POST与Emberjs一起工作
即使我可以看到在控制台上发送的 POST 请求,但数据以 0 的形式插入到数据库中。
这是我的后端,我正在使用Codeigniter。
控制器
function createNewProject() {
$this -> load -> model('usermodel');
$projectname = $this -> input -> post('projectname');
$projectdesc = $this -> input -> post('projectdesc');
$this -> usermodel -> createProject($projectname, $projectdesc);
}
型:
function createProject($projectname, $projectdesc) {
$this -> db -> set('projectname', $projectname);
$this -> db -> set('projectdesc', $projectdesc);
$q = $this -> db -> insert('projects');
return;
}
这是更新的App.js
控制器,
App.ProjectController = Ember.ArrayController.extend({
actions : {
createNew : function() {
App.Project.createNew();
}
}
});
App.ProjectRoute = Ember.Route.extend({
});
App.Project.reopenClass({
createNew : function() {
dataString = $("#project").serialize();
$.ajax({
type : "POST",
url : "http://ankur.local/users/createNewProject",
data : dataString,
dataType : "json",
success : function(data) {
alert("yes");
}
});
return false;
}
});
如果您看到我的链接帖子和一件奇怪的事情,HTML 也是一样的,我什至没有收到成功的警报框。我可能在哪里犯了错误?
查看您之前的问题(包含 HTML 的问题),您没有在<input>
元素上设置任何名称属性,因此,serialize()
不会创建正确的 POST 有效负载。您还应该在实际表单上使用serialize()
,例如
var dataString = $('#project form.form-horizontal').serialize();
您还可以在浏览器的网络控制台中检查 POST 有效负载。下次你可能应该检查一下。
关于 CodeIgniter 的输入类 -"如果您尝试检索的项目不存在,则该函数返回 FALSE(布尔值)。
本质上,问题在于 $_POST['projectname'] 和 $_POST['projectdesc'] 没有呈现给 CI 控制器,所以当你调用 CI 输入类时,你会得到 0。