代码之家  ›  专栏  ›  技术社区  ›  John Altar

使用Ajax POST时数据库中的数据为0

  •  0
  • John Altar  · 技术社区  · 11 年前

    这个问题来自于这个问题, 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也是一样的,如果你看到我链接的帖子和一件奇怪的事情,我甚至不会收到成功的提示框。我可能在哪里犯了错误?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Community CDub    7 年前

    看着你 previous question (包括HTML的),您还没有在 <input> 因此,元件, serialize() 不会创建正确的POST负载。您还应该使用 序列化() 在实际形式上

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

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

        2
  •  1
  •   Benton Snyder    10 年前

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

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