【问题标题】:Unable to get Ajax POST working with Emberjs无法让 Ajax POST 与 Emberjs 一起使用
【发布时间】:2013-10-07 01:54:38
【问题描述】:

我现在要做的是尝试通过 Ajax POST 将数据发送到数据库。我将首先从我拥有的 HTML 表单开始,

<script type="text/x-handlebars" id="project">
    <div class="row">
        <div class="span6">
            <form class="form-horizontal">
                <div class="control-group">
                    <label class="control-label" for="projectname">Project Name: </label>

                    <div class="controls">
                        {{!view App.TextFieldEmpty}}
                        <input type="text" id="projectname" required title="First Name is Required!" pattern="[A-z ]{10,}" placeholder="Enter Project Name"/>
                    </div>
                </div>
                <div class="control-group">
                    <label class="control-label" for="projectdesc">Project Description:</label>

                    <div class="controls">
                        <textarea rows="3" id="projectdesc" placeholder="Enter Project Desc"
                                  required="Description Required"></textarea>
                    </div>
                </div>
                <div class="control-group">
                    <div class="controls">
                        <button class="btn" {{action 'createNew'}}>Add Project</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</script> 

接下来,是我的App.js,根据 Ember 指南,我们必须先映射模板对吗?所以这里是我的router

App.Router.map(function() {

    this.resource('project');

});

接下来,我要插入数据的表是一个简单的表,只有三个字段; id, projectname &amp; projectdesc.

App.Model = Ember.Object.extend({

});

App.Project = App.Model.extend({
    id : null,
    projectname : null,
    projectdesc : null
});

现在关于这个问题,

App.ProjectController = Ember.ArrayController.extend({
    actions : {
        createNew : function() {
            this.get('model').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");
                }
            });
        }
    });

我在控制台上收到此错误:

Uncaught TypeError: Object [object Array] has no method 'createNew' 

这似乎就行了

this.get('model').createNew();

此外,我使用的是非 RESTful PHP 后端。

尽管我认为我已经在模型中创建了方法。此外,我完全以这种方式使用了 GET 并且它有效,但不同之处在于我在模型中返回了该方法。在这种情况下,我认为我必须从控制器调用该方法。我可能在哪里做错了?我将不胜感激任何帮助或建议。

【问题讨论】:

    标签: javascript jquery ajax ember.js


    【解决方案1】:

    代替

    this.get('model').createNew();
    

    试试下面的。

    App.Project.createNew();
    

    【讨论】:

    • 好的,成功了!我认为数据现在正在运行,但又出现了一个小故障。数据库中的 projectname 和 projectdesc 为 0 为什么? :(
    • 当您发送项目名称和描述时,您在 php 层中得到了什么,记录的 id 是否保存为“0”??
    猜你喜欢
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2018-12-20
    • 2014-10-31
    • 2018-01-02
    • 2016-11-14
    • 2015-02-01
    • 2019-05-10
    相关资源
    最近更新 更多