0

这个问题来自问题,Unable to get Ajax POST working with 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 是相同的,我什至没有收到成功的警报框。我可能在哪里犯错?

4

2 回答 2

2

查看您之前的问题(包括 HTML 的问题),您尚未在<input>元素上设置任何名称属性,因此serialize()不会创建正确的 POST 有效负载。您还应该serialize()在实际表格上使用,例如

var dataString = $('#project form.form-horizontal').serialize();

您还可以在浏览器的网络控制台中检查 POST 有效负载。下次你应该检查一下。

于 2013-10-01T05:07:46.257 回答
1

关于 CodeIgniter 的输入类 - “如果您尝试检索的项目不存在,该函数将返回 FALSE(布尔值)。”

本质上,问题在于您 $_POST['projectname'] 和 $_POST['projectdesc'] 没有被呈现给 CI 控制器,因此当您调用 CI 输入类时,您会得到 0 回来。

于 2013-10-01T05:22:19.947 回答